外观模式/建造者模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外观模式/建造者模式相关的知识,希望对你有一定的参考价值。
外观模式(门面模式)
通过在必需的逻辑和方法的集合前创建简单的外观接口,来隐藏调用对象的复杂性.
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();
以上是关于外观模式/建造者模式的主要内容,如果未能解决你的问题,请参考以下文章
编程经常使用设计模式具体解释--(上篇)(工厂单例建造者原型)