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();

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

  • 相关阅读:
    Java 线程池概念、原理、简单实现
    Java 中的等待唤醒机制透彻讲解
    Java 多线程安全问题简单切入详细解析
    理解 Java 多线程
    Java 异常的处理
    Android MediaPlayer的生命周期
    Node.js 撸第一个Web应用
    Android简易实战教程--第三十四话《 自定义SeekBar以及里面的一些小知识》
    使用Intent传递对象
    Android 异步查询框架AsyncQueryHandler的使用
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/4366157.html
Copyright © 2011-2022 走看看