码迷,mamicode.com
首页 > Web开发 > 详细

php 适配器模式

时间:2017-03-17 13:32:13      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:bst   strong   工作   blog   can   ons   color   adapter   今天   

适配器模式

 

现在有这样一个场景,某公司有一群动物,各种动物会吃饭,说话,普通实现方式就是写一个父类,其子类去继承父类实现该方法;

<?php

    abstract class subject
    {
        abstract function talk();
        abstract function eat();
    }
    class cat extends subject
    {
        public function talk()
        {
            echo ‘I can talk‘;
        }
        public function eat()
        {
            echo ‘I can eat‘;
        }
    }

现在其他动物要进来,不过他们调用的方式是doTalk和doEat两种方法,如果实现的话就是直接在增加两个方法

<?php

    abstract class subject
    {
        abstract function talk();
        abstract function eat();
        abstract function doTalk();
        abstract function doEat();
    }
    class cat extends subject
    {
        public function talk()
        {
            echo ‘I can talk‘;
        }
        public function eat()
        {
            echo ‘I can eat‘;
        }
        public function doTalk()
        {
            $this->talk();
        }
        public function doEat()
        {
            $this->eat();
        }
    }

可是以后陆续增加其他动物,程序员的工作量就特别大,如果要修改一些方法,那程序员会发疯的基本;有其他方法解决吗?当然有了,就是今天的主角,适配器模式。

<?php

    abstract class subject
    {
        abstract function talk();
        abstract function eat();
        abstract function doTalk();
        abstract function doEat();
    }
    class cat extends subject
    {
        public function talk()
        {
            echo ‘I can talk‘;
        }
        public function eat()
        {
            echo ‘I can eat‘;
        }
        public function doTalk()
        {
            $this->talk();
        }
        public function doEat()
        {
            $this->eat();
        }
    }

    interface dog
    {
        public function doTalk();
        public function doEat();
    }

    class dogAdapter implements dog
    {
        private $_adaptee;
        public function __construct(subject $adaptee)
        {
            $this->_adaptee = $adaptee;
        }
        public function doTalk()
        {
            $this->_adaptee->talk();
        }
        public function doEat()
        {
            $this->_adaptee->eat();
        }
    }
    

这样写就降低了代码的耦合度,实现了程序设计的开闭原则:对扩展开发,对修改关闭。

        

php 适配器模式

标签:bst   strong   工作   blog   can   ons   color   adapter   今天   

原文地址:http://www.cnblogs.com/happy-dream/p/6565526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!