html5中文学习网

您的位置: 首页 > 网络编程 > PHP编程 » 正文

PHP设计模式之外观模式_PHP教程_编程技术

[ ] 已经帮助:人解决问题

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

  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.htmlr8RHTML5中文学习网 - HTML5先行者学习网

r8RHTML5中文学习网 - HTML5先行者学习网
r8RHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助