PHP设计模式-外观

适用性

把系统中类的调用委托给一个单独的类,对外隐藏了内部的复杂性,很有依赖注入容器的感觉哦

代码示例

/**

* 动物接口

*/

interface AnimalInterface

{

    /**

    * 生产方法

    *

    * @return string

    */

    public function produce();

}

/**

* 实体鸡工厂

*/

class Chicken implements AnimalInterface

{

    /**

    * 生产鸡

    *

    * @return string

    */

    public function produce()

    {

        echo "生产了一只鸡~ \n";

    }

}

/**

* 实体猪工厂

*/

class Pig implements AnimalInterface

{

    /**

    * 生产猪

    *

    * @return string

    */

    public function produce()

    {

        echo "生产了一只猪~ \n";

    }

}

/**

* 外观类

*/

class AnimalMaker

{

    /**

    * 鸡实工厂例

    * @var object

    */

    private $_chicken;

    /**

    * 猪实工厂例

    * @var object

    */

    private $_pig;

    /**

    * 构造函数

    *

    * @return void

    */

    public function __construct()

    {

        $this->_chicken = new Chicken();

        $this->_pig    = new Pig();

    }

    /**

    * 生产方法

    *

    * 生产鸡

    * @return string

    */

    public function produceChicken()

    {

        $this->_chicken->produce();

    }

    /**

    * 生产方法

    *

    * 生产猪

    * @return string

    */

    public function producePig()

    {

        $this->_pig->produce();

    }

}

// 初始化外观类

$animalMaker = new AnimalMaker();

// 生产一只猪

$animalMaker->producePig();

// 生产一只鸡

$animalMaker->produceChicken();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 适用性 php享元(轻量级)模式 就是缓存了创建型模式创建的对象,不知道为什么会归在结构型模式中,个人觉得创建型模...
    木有sky阅读 357评论 0 0
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,448评论 0 10
  • 昨夜若是月圆,今日注定月缺。 昨日中秋,八月十五。你是否桌席畅谈,阖家欢乐?你是否亲朋作伴,美景与共?你是否“守得...
    宁羡鱼阅读 270评论 0 0
  • 家里有只喵星人,因为生得黑又绅士,让人想到黑客帝国,于是起名叫尼奥,有点救世主的意思。前主人说是英短,又说是串串,...
    吃货张大喵阅读 537评论 2 3
  • 我妈说,你再坚持一下,他就喜欢你了…… 可是,我已经不喜欢他了! 我喜欢喜欢一个人的那种感觉,单纯的就像个情窦...
    赵的第二人格阅读 641评论 -2 4