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/>\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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值