前言
外观模式(Facade Pattern)是一个比较简单的概念,它只是为一个子系统创建一个单一的入口。这样的好处是有助于分离项目中不同的部分,其次,会使得我们在访问代码时变得简洁方便。另外,由于只在一个地方调用子系统,减少了出错的可能性。
外观模式比较简单,这里就不做过多的赘述了,主要是要吸收该模式减少耦合的思想,直接上代码。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| <?php
class SystemA { public function operationA() { echo "operationA <br>"; } }
class SystemB { public function operationB() { echo "operationB <br>"; } }
class SystemC { public function operationC() { echo "operationC <br>"; } }
class Facade { protected $systemA; protected $systemB; protected $systemC;
function __construct() { $this->systemA = new SystemA(); $this->systemB = new SystemB(); $this->systemC = new SystemC(); }
public function myOperation() { $this->systemA->operationA(); $this->systemB->operationB(); $this->systemC->operationC(); } }
$facade = new Facade(); $facade->myOperation();
|
总结
使用外观模式最大的优点就是子系统与客户端之间是松耦合的关系,客户端不必知道具体有哪些子系统,也无需知道他们是如何工作的,通过引入一个外观类,提供一个客户端间接访问子系统的高级接口。子系统和外观类可以独立运作,修改某一个子系统的内容,不会影响到其他子系统,也不会影响到外观对象。
不过它的缺点就是它不够灵活,当需要增加一个子系统的时候,需要修改外观类。