<span>PHP设计模式—适配器模式</span> - Go语言中文社区

<span>PHP设计模式—适配器模式</span>


 

定义:

适配器模式(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/>n";
    }
}


/**
 * Adapter.php(适配器)
 * Class Adapter
 */
class Adapter extends Adaptee implements Target
{
    public function method2()
    {
        // TODO: Implement method2() method.
        echo "Adapter Method2<br/>n";
    }
}


// 客户端调用
$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/>n";
    }
}


/**
 * 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/>n";
    }
}


// 客户端调用
$adapter = new Adapter(new Adaptee());
$adapter->method1();
$adapter->method2();

 

版权声明:本文来源博客园,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.cnblogs.com/woods1815/p/13853054.html
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-07 21:32:11
  • 阅读 ( 1210 )
  • 分类:设计模式

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢