桥接模式

2017-05-30  本文已影响1人  散装咖啡
/**
* bridge模式
*
* 将抽象部份与它实现部分分离,使用它们都可以有独立的变化
*/

    abstract class Implementor
    {
        abstract public function operation();
    }

    class ConcreteImplementorA extends Implementor
    {
        public function operation()
        {
            echo "ConcreteImplementorA Operation<br/>";
        }
    }

    class ConcreteImplementorB extends Implementor
    {
        public function operation()
        {
            echo "ConcreteImplementorB Operation<br/>";
        }
    }

    class Abstraction
    {
        protected $_implementor = null;
        
        public function setImplementor($implementor)
        {
            $this->_implementor =$implementor;
        }
        
        public function operation()
        {
            $this->_implementor->operation();
        }
    }

    class RefinedAbstraction extends Abstraction
    {
        
    }

    class ExampleAbstraction extends Abstraction
    {
        
    }

    
$objRAbstraction = new RefinedAbstraction();
$objRAbstraction->setImplementor(new ConcreteImplementorB());
$objRAbstraction->operation();
$objRAbstraction->setImplementor(new ConcreteImplementorA());
$objRAbstraction->operation();

$objEAbstraction = new ExampleAbstraction();
$objEAbstraction->setImplementor(new ConcreteImplementorB());
$objEAbstraction->operation();

参考文章 https://wenku.baidu.com/view/b4c78b4702768e9951e738fb.html

上一篇 下一篇

猜你喜欢

热点阅读