zoukankan      html  css  js  c++  java
  • 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();

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

  • 相关阅读:
    django常用命令集合 待完善
    InSAR 数据
    InSAR 处理流程和原理
    InSAR 处理软件
    InSAR 参考书目,文献推荐
    InSAR
    小程序测试方案
    【非原创】测试环境的目的
    【非原创】测试的职责
    api自动生成思路
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/4366157.html
Copyright © 2011-2022 走看看