PHP设计模式(十)适配器模式的对象适配器的实现

作者: 温新

分类: 【设计模式】

阅读: 2179

时间: 2020-04-08 15:45:46

对象适配器模式不再详细记录过程,稍微详解可以参考类适配器模式

object/Adaptee.php

<?php

/**
 * Adaptee 源角色 需要适配的类
 * 
 */
class Adaptee
{
    // 墙壁上的插座
    public function lineBoard(){
        echo '单一功能的2孔插座';
    }
}

object/Target.php

<?php

/**
 * Target目标角色 -->需要进行适配的接口
 */
interface Target
{
    // 适配插座功能
    public function lineBoard();

    // 添加新的功能,适配成功显示通知
    public function notify();

}

object/Adapter.php

<?php

class Adapter
{
    public function __construct(Adaptee $adaptee)
    {
        $this->adaptee = $adaptee;
    }

    // 实现新的通知同能
    public function notify()
    {
        echo 'hi,已完成适配 ';
    }

    // 对单一的功能的插座进行适配为多功能插座,也就是重写
    public function lineBoard()
    {
        echo $this->adaptee->lineBoard();
    }
}

object/index.php

<?php
include './Target.php';
include './Adaptee.php';
include './Adapter.php';

// 客户端实现
class Client
{
    public function run()
    {
        // 输出源类信息,也就是墙壁上单一功能的插座
        $adaptee = new Adaptee();
        echo $adaptee->lineBoard();
        echo '<hr>';

        // 输出已经完成的适配的多功能插座
        $adater = new Adapter($adaptee);
        echo $adater->notify();
        echo $adater->lineBoard();
    }
}

$client = new Client();
$client->run();

我是夕阳何处寻,期待和优秀的你一起同行!

夕阳何处寻

2020年04月08日

请登录后再评论