设计模式之适配器模式
设计模式之适配器模式
场景:其实最简单的例子是当我们引用一个第三方类库。这个类库随着版本的改变,它提供的API也可能会改变。如果很不幸的是,你的应用里引用的某个API已经发生改变的时候
适配器模式核心思想:把对某些相似的类的操作转化为一个统一的“接口”(这里是比喻的说话)--适配器,或者比喻为一个“界面”,统一或屏蔽了那些类的细节。适配器模式还构造了一种“机制”,使“适配”的类可以很容易的增减,而不用修改与适配器交互的代码,符合“减少代码间耦合”的设计原则。
header('content-type:text/html;charset=utf-8');
interface IAdapter
{
public function charge();
public function chargeNew();
}
class Adapter implements IAdapter
{
private $_adapter;
public function __construct(ICharge $cObj)
{
$this->_adapter = $cObj;
}
public function charge()
{
$this->_adapter->charging();
}
public function chargeNew()
{
$this->_adapter->chargingNew();
}
}
# 充电器接口
interface ICharge
{
public function charging();
public function chargingNew();
}
class Apple implements ICharge
{
public function charging()
{
echo 'apple开始充电...';
}
public function chargingNew()
{
echo 'apple新接口开始充电...';
}
}
class HuaWei implements ICharge
{
public function charging()
{
echo 'huawei开始充电...';
}
public function chargingNew()
{
echo 'huawei新接口开始充电...';
}
}
$phone = new Adapter(new HuaWei());
$phone->charge();