外觀模式/建造者模式
阿新 • • 發佈:2017-10-29
const nbsp con 必須 per onf ray wav for
外觀模式(門面模式)
通過在必需的邏輯和方法的集合前創建簡單的外觀接口,來隱藏調用對象的復雜性.
class A { public function song($songList) { foreach($songList as $val) { echo $val . ‘.mp3‘; } } } class B { public function song($songList) { foreach($songList as $val) { echo $val . ‘.wav‘; } } } class Facade { private $a; private $b; public function create() { $this->a = new A(); $this->B = new B(); } public function method($songList) { $this->a->song($songList); $this->b->song($songList); } } 特點: "在必需的邏輯和方法的集合前"也就意味著外觀模式調用了不止一個對象.如果是調用一個對象的多個方法,就成了建造者模式了.
建造者模式
定義了處理其他對象的復雜構建的對象設計.
比如如下類: class Person { private $name, $age; public function setName($name){ $this->name = $name; } public function setAge($age) { $this->age = $name; } } 如果我們要使該類"完整",必須調用setName和setAge.為了體現類的單一職責原則,使類看起來清晰明了.這時候我們可以使用建造者模式. class Builder { private $person; private $configs public function __construct($configs) { $this->person = new Person(); $this->configs = $configs; } // 將person的多個方法都放在此方法中執行. public function build() { $this->person->setName($config[‘name‘]); $this->person->setAge($config[‘age‘]); } // 既然是建造者模式,建造完,還是要返回被建造對象,否則也算不上建造者模式. public function getPerson() { return $this->person; } } // 調用 $build = new Build(array(‘name‘ => ‘php‘, ‘age‘ => 10)); $build->build(); $person = $person->getPerson();
外觀模式/建造者模式