zoukankan      html  css  js  c++  java
  • PHP设计模式---适配器模式

    目的:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原来由于接口不兼容而不能一起工作的那此类可以一起工作。

    主要角色:
    目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的
    源(Adaptee)角色:需要进行适配的接口
    适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配;适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类
    适用性:
    1、你想使用一个已经存在的类,而它的接口不符合你的需求
    2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作
    3、你想使用一个已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口(仅限于对象适配器)

    <?php
    /**
     * 目标角色
     */
    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;
        }
        /**
         * 委派调用Adapter的simplemethod1方法
         */
        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();
    

    运行结果:

    cr:https://www.cnblogs.com/moxiaoan/p/6230018.html

  • 相关阅读:
    qsort()的使用
    c语言不寻常的类型转换(类型提升)
    堆栈段的三个主要用途
    区分 声明与定义
    宏定义陷阱与typedef
    约瑟夫环解决方案
    线程中断测试
    Redis
    本地缓存
    tomcat优化
  • 原文地址:https://www.cnblogs.com/nycj/p/14518603.html
Copyright © 2011-2022 走看看