<?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;
}
}
?>
設計模式之外觀模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.