• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP设计模式之外观模式_php

php 搞代码 3年前 (2018-06-21) 149次浏览 已收录 0个评论

外观设计模式的目标是: 控制外部错综复杂的关系, 并且提供简单的接口以利用上述组件的能力。
为了隐藏复杂的,执行业务进程某个步骤所需的方法和逻辑组,就应当使用基于外观设计模式的类。

  1. <?php   
  2.     /**  
  3.      * 代码示例: 获取CD对象,对其所有属性应用大写形式,并且创建一个要提交给Web服务的,格式完整的XML文档。  
  4.      */   
  5.     class CD {   
  6.            
  7.         public $tracks = array();   
  8.         public $band   = '';   
  9.         public $title  = '';   
  10.            
  11.         public function __construct($tracks$band$title) {   
  12.             $this->tracks = $tracks;   
  13.             $this->band   = $band;   
  14.             $this->title  = $title;   
  15.         }   
  16.     }   
  17.        
  18.     class CDUpperCase {   
  19.            
  20.         public static function makeString(CD $cd$type) {   
  21.             $cd->$type = strtoupper($cd->$type);   
  22.         }   
  23.            
  24.         public static function makeArray(CD $cd$type) {   
  25.             $cd->$type = array_map("strtoupper"$cd->$type);   
  26.         }      
  27.     }   
  28.        
  29.     class CDMakeXML {   
  30.            
  31.         public static function create(CD $cd) {   
  32.             $doc  = new DomDocument();   
  33.                
  34.             $root = $doc->createElement("CD");   
  35.             $root = $doc->appendChild($root);   
  36.                
  37.             $title = $doc->createElement("TITLE"$cd->title);   
  38.             $title = $root->appendChild($title);   
  39.                
  40.             $band = $doc->createElement("BAND"$cd->band);   
  41.             $band = $root->appendChild($band);   
  42.                
  43.             $tracks = $doc->createElement("TRACKS");   
  44.             $tracks = $root->appendChild($tracks);   
  45.                
  46.             foreach ($cd->tracks as $track) {   
  47.                 $track = $doc->createElement("TRACK"$track);   
  48.                 $track = $tracks->appendChild($track);   
  49.             }   
  50.                
  51.             return $doc->saveXML();   
  52.         }   
  53.     }   
  54.        
  55.     class WebServiceFacade {   
  56.            
  57.         public static function makeXMLCall(CD $cd) {   
  58.             CDUpperCase::makeString($cd"title");   
  59.             CDUpperCase::makeString($cd"band");   
  60.             CDUpperCase::makeArray($cd"tracks");   
  61.                
  62.             $xml = CDMakeXML::create($cd);   
  63.                
  64.             return $xml;   
  65.         }   
  66.     }   
  67.        
  68.     $tracksFromExternalSource = array("What It Means""Brr""Goodbye");   
  69.     $band  = "Never Again";   
  70.     $title = "Waster of a Rib";   
  71.     $cd = new CD($tracksFromExternalSource$band$title);   
  72.     $xml = WebServiceFacade::makeXMLCall($cd);   
  73.     echo $xml;   
  74. ?> 

 数据库脚本请参照:http://www.cxybl.com/html/wlbc/php/2011_1126_9458.html

欢迎大家阅读《PHP设计模式之外观模式_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址