PHP设计模式(十)适配器模式的对象适配器的实现
对象适配器模式不再详细记录过程,稍微详解可以参考类适配器模式。
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日
请登录后再评论