• 桥接模式的一个画图形实例


    <?php
    
    // 抽象化角色,抽象化给出的定义,并保存一个对实现化对象的引用--画图抽象类
    abstract class Abstraction
    {
        protected $imp; // 对实现化对象的引用
        public function operation()
        {
            $this->imp->operationImp();
        }
    }
    
    // 修正抽象化角色, 扩展抽象化角色,改变和修正父类对抽象化的定义--具体画图类
    class RefinedAbstraction extends Abstraction
    {
        public function __construct(Implementor $imp)
        {
            $this->imp = $imp;
        }
        //@@@@@@@@@@@采用这个模式,这里要实现的功能可以很灵活的修改了
        //@@@@@@@@@@如果是公共的,可以直接在这里添加
        //@@@@@@@@@@如果是参数对象中私有的,可以直接在那个对象中添加或者修改
        public function operation()
        {
            $this->imp->operationImp();//operationImp()是$imp下的方法
        }
    }
    
    // 实现化角色, 给出实现化角色的接口,但不给出具体的实现--形状抽象类
    abstract class Implementor
    {
        abstract public function operationImp();
    }
    
    // 具体化角色A--方框
    class ConcreteImplementorA extends Implementor
    {
        public function operationImp()//画方框
        {
            echo "我是ConcreteImplementorA下面的operationImp方法:画一个方框<br>";
        }
    }
    
    // 具体化角色B--圆圈
    class ConcreteImplementorB extends Implementor
    {
        public function operationImp()//画圆圈
        {
            echo "我是ConcreteImplementorB下面的operationImp方法:画一个圆圈<br>";
        }
    }
    
    
    //@@@@@@@@@@@@@@@@@@@@@@使用实例-扩充:画一个多边形
    class ConcreteImplementorC extends Implementor
    {
        public function operationImp()//画多边形
        {
            echo "我是ConcreteImplementorC下面的operationImp方法:画一个多边形<br>";
        }
    }
    
    // client
    $abstraction = new RefinedAbstraction(new ConcreteImplementorA());//把方框对象的某些能力给画图实例
    $abstraction->operation();//画图类画方框
    
    $abstraction = new RefinedAbstraction(new ConcreteImplementorB());//把圆圈对象的某些能力给画图实例
    $abstraction->operation();//画图类画圆圈
    
    $abstraction = new RefinedAbstraction(new ConcreteImplementorC());
    $abstraction->operation();
    
    ?>
    // @ 部分  代表重点解释
  • 相关阅读:
    河北省科技创新年报统计系统分析
    《软件需求十步走》阅读笔记06
    《软件需求十步走》阅读笔记05
    《软件需求十步走》阅读笔记04
    河北科技创新平台年报统计
    《软件需求十步走》阅读笔记03
    《软件需求十步走》阅读笔记02
    《软件需求十步走》阅读笔记01
    案例分析
    2017秋季个人阅读计划
  • 原文地址:https://www.cnblogs.com/jiufen/p/5000904.html
Copyright © 2020-2023  润新知