<?php
// 适配器模式-对象适配
/**
* 需要被适配的类
* 需求:给 Source 新增一个新的方法但又不修改 Source 的源代码
*/
class Source
{
public function action() {
echo 'call action', '<br/>';
}
}
interface Targetable
{
/**
* Source 类中同名的方法,
* 适配器中不需要使用的方法可以不在此接口中定义
*/
function action();
/**
* 需要给 Source 类新增的方法
*/
function action2();
}
/**
* 适配器类
* 相对于 类适配 更加灵活
*/
class Adapter implements Targetable
{
/**
* 不是继承 Source 类, 而是持有 Source 类的实例
*/
private $sou = null;
public function __construct(Source $s) {
$this->sou = $s;
}
public function action() {
$this->sou->action();
}
public function action2() {
echo 'call <b>action2</b>', '<br/>';
}
}
// test code
$s = new Source();
$ad = new Adapter($s);
$ad->action();
$ad->action2();
适配器模式之对象适配
最新推荐文章于 2021-03-02 13:59:33 发布