• PHP 设计模式之适配器模式


    <?php
    
    //【主要角色】
    //目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的
    //源(Adaptee)角色:需要进行适配的接口
    //适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类
    //【适用性】
    //1、你想使用一个已经存在的类,而它的接口不符合你的需求
    //2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作
    //3、你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器)
    //目标角色   我们期望得到的 接口规约  
    interface Target {
    
        public function simpleMethod1();
    
        public function simpleMethod2();
    }
    
    //源角色  需要是配的角色
    class Adaptee {
    
        public function simpleMethod1() {
            echo 'Adapter simpleMethod1' . "<br>";
        }
    
    }
    
    //类适配器角色  
    class Adapter implements Target {
    
        private $adaptee;
    
        function __construct(Adaptee $adaptee) {
            $this->adaptee = $adaptee;
        }
    
        //委派调用Adaptee的sampleMethod1方法  
        public function simpleMethod1() {
            echo $this->adaptee->simpleMethod1();
        }
    
        public function simpleMethod2() {
            echo 'Adapter simpleMethod2' . "<br>";
        }
    
    }
    
    //客户端  
    class Client {
    
        public static function main() {
            $adaptee = new Adaptee();
            $adapter = new Adapter($adaptee);
            $adapter->simpleMethod1();
            $adapter->simpleMethod2();
        }
    
    }
    
    Client::main();

    在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

  • 相关阅读:
    ORACLE权限管理
    ORACLE12.2.0.1.0 支持数据对象名称超过30个字符
    Redhat下卸载自带Mysql相关组键
    周鸿祎:如何做好产品经理
    javascript类型与类型检测
    AJAX
    HTTP协议
    HTML5web存储之localStorage
    CSS定位的三种机制:普通流、绝对定位和浮动
    CSS元素居中的常用方法
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/4366157.html
Copyright © 2020-2023  润新知