S2:外观模式 Facade

为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.

什么时候使用:
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);
    }
}

  

 

posted @ 2017-11-05 16:00  rorshach  阅读(153)  评论(0编辑  收藏  举报