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

    定义:

    适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

     

    结构:

    • Target:目标接口,定义与客户端交互相关的接口,目标可以是具体的或抽象的类,也可以是接口。
    • Adaptee:源接口,需要适配的类。
    • Adapter:适配器,对 Adaptee 的接口与 Target 接口进行适配,通过在内部包装一个 Adaptee对象,把源接口转换成目标接口。
    • Client:客户端代码。

     

    代码实例:

    类适配器:

    /**
     * Target.php(目标接口)
     * Interface Target
     */
    interface Target
    {
        public function method1();
    
        public function method2();
    }
    
    
    /**
     * Adaptee.php(源接口)
     * Class Adaptee
     */
    class Adaptee
    {
        public function method1()
        {
            echo "Adaptee Method1<br/>
    ";
        }
    }
    
    
    /**
     * Adapter.php(适配器)
     * Class Adapter
     */
    class Adapter extends Adaptee implements Target
    {
        public function method2()
        {
            // TODO: Implement method2() method.
            echo "Adapter Method2<br/>
    ";
        }
    }
    
    
    // 客户端调用
    $adapter = new Adapter();
    $adapter->method1();
    $adapter->method2();

    对象适配器:

    /**
     * Target.php(目标接口)
     * Interface Target
     */
    interface Target
    {
        public function method1();
    
        public function method2();
    }
    
    
    /**
     * Adaptee.php(源接口)
     * Class Adaptee
     */
    class Adaptee
    {
        public function method1()
        {
            echo "Adaptee Method1<br/>
    ";
        }
    }
    
    
    /**
     * Adapter.php(适配器)
     * Class Adapter
     */
    class Adapter implements Target
    {
        private $adaptee;
    
        public function __construct(Adaptee $adaptee)
        {
            $this->adaptee = $adaptee;
        }
    
    
        public function method1()
        {
            // TODO: Implement method1() method.
            $this->adaptee->method1();
        }
    
    
        public function method2()
        {
            // TODO: Implement method2() method.
            echo "Adapter Method2<br/>
    ";
        }
    }
    
    
    // 客户端调用
    $adapter = new Adapter(new Adaptee());
    $adapter->method1();
    $adapter->method2();
  • 相关阅读:
    分布式消息系统Kafka初步
    webService 学习
    一个周末掌握IT前沿技术之node.js篇
    mount
    dd
    fsck
    resize2fs
    mkfs
    parted
    tune2fs
  • 原文地址:https://www.cnblogs.com/woods1815/p/13853054.html
Copyright © 2011-2022 走看看