设计模式之外观模式

来源:互联网 发布:淘宝用户名可以更改吗 编辑:程序博客网 时间: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;    }}?>