zoukankan      html  css  js  c++  java
  • PHP设计模式

    将抽象部分与它的实现部分分离,使他们都可以独立的变抽象与它的实现分离,即抽象类和它的派生类用来实现自己的对象

    桥接与适配器模式的关系(适配器模式上面已讲解):
    桥接属于聚合关系,两者关联 但不继承
    适配器属于组合关系,适配者需要继承源

    聚合关系:A对象可以包含B对象 但B对象不是A对象的一部分

    <?php
    /**
     * 
     *实现化角色, 给出实现化角色的接口,但不给出具体的实现。
     */
    abstract class Implementor { 
        abstract public function operationImp();
    }
    
    class ConcreteImplementorA extends Implementor { // 具体化角色A
        public function operationImp() {echo "A";}
    }
    
    class ConcreteImplementorB extends Implementor { // 具体化角色B
        public function operationImp() {echo "B";}
    }
    
    
    /**
     * 
     * 抽象化角色,抽象化给出的定义,并保存一个对实现化对象的引用
     */
    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(); }
    }
    
    
    
    
    
    // client
    $abstraction = new RefinedAbstraction(new ConcreteImplementorA());
    $abstraction->operation();//输出:A
    $abstraction = new RefinedAbstraction(new ConcreteImplementorB());
    $abstraction->operation();//输出:B
    ?>
    
  • 相关阅读:
    静态库中的静态变量连接失败的解决
    (转)Virtual PC 2007虚拟网络设置
    (zt)iPhone Developer注册
    (zt)正则表达式30分钟入门教程
    (zt)Flex SDK 3.2和Flex Builder 3.0.2升级
    (转)完成端口之性能优化
    (摘)法拉利年代型号
    安装windows下的NDS开发环境
    [C#]小问题
    javascript "未结束字符串"
  • 原文地址:https://www.cnblogs.com/taozi32/p/9226523.html
Copyright © 2011-2022 走看看