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

  • 相关阅读:
    05 单例模式
    04 volatile关键字实现原理
    03 synchronized
    02 java内存模型
    spark性能调优06-数据倾斜处理
    redis缓存架构-03-redis下的replication以及master+slave
    SpringBoot webSocket搭建示例
    Httpclient-(get、post(application/json)、post(application/form-data)、download、upload)
    CentOS-Java 依赖安装
    Git使用教程
  • 原文地址:https://www.cnblogs.com/nycj/p/14518603.html
Copyright © 2011-2022 走看看