为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.
什么时候使用:
1,开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
2,维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
3,外观模式可以隐藏来自调用对象的复杂性。
UML:
示例代码:
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); } }