设计模式之外观模式
来源:互联网 发布:淘宝用户名可以更改吗 编辑:程序博客网 时间:2024/05/17 04:26
<?php/* * 外观:通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性,封装了复杂的业务逻辑和调用 */class CD{ public $tracks = array(); public $band = ""; public $title = ""; public function __construct( $title, $band, $tracks) { $this->title = $title; $this->band = $band; $this->tracks = $tracks; }}$tracks = array("what it means", "brr", "goodbye");$title = "waste of a rib";$band = "never again";$cd = new CD( $tiltle, $band, $tracks);class CDUpperCase{ public static function makeString(CD $cd, $type){ $cd->$type = strtoupper($cd->$type); } public static function makeArray(CD $cd, $type){ $cd->$type = array_map("strtoupper", $cd->$type); }}class CDMakeXml{ public static function create(CD $cd){ $doc = new DomDocument(); $root = $doc->createElement("CD"); $root = $doc->appendChild($root); $title = $doc->createElement("title", $cd->title); $title = $doc->appendChild($title); $band = $doc->createElement("band", $cd->band); $band = $root->appendChild($band); $tracks = $doc->createElement("tracks"); $tracks = $doc->appendChild( $tracks ); foreach( $cd->tracks as $track){ $track = $doc->createElement("track", $track); $tracks->appendChild($track); } return $doc->saveXML(); }}//web服务调用class WebServiceFacade{ public static function makexmlCall(CD $cd){ CDUpperCase::makeString($cd, 'title'); CDUpperCase::makeString($cd, 'band'); CDUpperCase::makeArray($cd, 'tracks'); $xml = CDMakeXml::create($cd); return $xml; }}?>