php设计模式(13)适配器模式

2017-03-24 13:33:11 admin ...

前言:

我们说完了行为型设计模式,今天开始聊结构型设计模式—适配器模式。

内容概要:

1、什么是适配器模式
2、UML图
3、PHP代码示例

一、什么是适配器模式

在php实际编码时,适配器模式还是使用的比较多的。它通过接口的适配(限制),使得原本不能一起工作的类或者对象可以在一起工作。

举个例子:火车站里的手机充电站就是一个适配器,它可以将不同型号的手机放在一起充电。

适配器模式包括三个角色:

1、目标接口(Target):规定适配器能完成哪些手机充电,一般是接口形式或者抽象类的形式。

2、需要适配的类(Adaptee):类似不同手机的充电功能。

3、适配器(Adapter):类似充电站的手机充电线,有不同的接口适配。

适配器模式可以分为类适配器模式和对象适配器模式,我们这里拿对象适配器做例子。

二、UML图

UML图片来源于网上,老笔记中的,现在不知出处了。

出处不明,致谢图片原作者

三、PHP代码示例

我们这里拿手机充电站的例子,使用php描述出来适配器模式。

<?php
/************************************************************
** @Description: PHP设计模式之适配器模式
** @Author: haodaquan
** @Date:   2017-03-23 13:28:27
** @Last Modified by:   haodaquan
** @Last Modified time: 2017-03-24 13:08:48
*************************************************************/

#充电站接口
interface IchargerStation{
    public function charging(); #老充电方法
    public function newCharging();#新充电方法
}

#手机接口
interface Icharger{
    public function charging();
}

#苹果手机类
class Ios{
    public function charging() {
        echo '苹果手机充电老方法<br/>';
    }
}

#华为手机类
class Huawei{
    public function charging() {
        echo '华为手机充电老方法<br/>';
    }
}
#充电站类
class ChargingStation implements IchargerStation{
    private $station;

    public function __construct($phoneType){
        $this->station = $phoneType;
    }

    public function charging() {
        $this->station->charging();
    }

    public function newCharging() {
        echo '手机充电站新方法<br/>';
    }
}
#创建一个充电站实例
$adapter = new ChargingStation(new Huawei());
$adapter->charging();
$adapter->newCharging();

exit();

显示结果

华为手机充电老方法
手机充电站新方法

在PHP实际应用中,数据库连接常用适配器模式。

相似文章