一起看看PHP设计模式之适配器模式
发布:smiling 来源: PHP粉丝网 添加日期:2022-07-03 09:10:43 浏览: 评论:0
PHP设计模式之适配器模式
生活场景问题引入:
假如需要去国外旅游,游玩,现在电子产品很丰富,但是每个电子产品都是需要电源来做驱动,手机,电脑,相机。。。但是又有一个很显示的问题,电子产品是很消耗电量的,电量没有了,就需要充电,在我们国家,我们买的电子产品出场带的电源充电器,一般都是220V的电压,但是世界很大,每个国家的要求(规定)又是不同的,比如美国就是120V
原理:
将一个类的接口转换为另外一种接口,让原本接口不兼容的类可以兼容。
用户调用适配器转化出来的目标接口方法,适配器再去调用被适配者的相关接口方法
好处:
用户是看不到被适配者,属于解耦的操作
适配器模式属于结构型的设计模式
适配器模式的三种实现方式
一、 类适配器
根据上面的UML图,我们可以看出,需要一个美国电压的接口UsaInterface,一个适配器类Adapter,一个中国电压的接口Chine,一个使用者Computer,在这里,中国电压就是被适配者,美国电压是最后的输出(目标),就是是配置者
- interface UsaInterface{
- public function outPut5V();}class China{
- private $voltage = 220;
- public function outPut220V()
- {
- return $this->voltage;
- }}class Adapter extends China implements UsaInterface{
- public function outPut5V()
- {
- // TODO: Implement outPut5V() method.
- $chinaVoltage = $this->outPut220V();
- return $chinaVoltage / 2 + 10 . "V";
- }}class Computer{
- public function index(UsaInterface $usa)
- {
- if ($usa->outPut5V() === "120V") {
- printf("可以在美国使用中国的电源插头给电脑充电了");
- } else {
- printf("不可以在美国使用中国的电源插头给电脑充电了");
- }
- }}class Client{
- public function __construct()
- {
- $adapter = new Adapter();
- $computer = new Computer();
- $computer->index($adapter);
- }}
二、对象适配器模式
对象适配器其实就是在类适配器的模式上做了一个调整,让适配器类Adapter不去继承被适配者的类,而是让它们组合在一起,这样就可以增加了使用的灵活度,也不会暴露被适配者的很多方法(使用关联关系来代替继承关系【合成复用原则】)。同时,没有继承就没有办法去覆盖父类的方法重写了,也算是有好有坏吧。如下:
- class Adapter implements UsaInterface{
- protected $china;
- public function __construct(China $china)
- {
- $this->china = $china;
- }
- public function outPut5V()
- {
- // TODO: Implement outPut5V() method.
- $chinaVoltage = $this->china->outPut220V();
- return $chinaVoltage / 2 + 10 . "V";
- }}
三、接口适配器(缺省适配器模式)
当不需要全部实现接口提供的方法时,可以先设计一个抽象类实现接口,并为接口提供默认的的空方法实现,那么改抽象类的子方法就可以有选择的覆盖父类的某
些方法来实现需求,(适用于一个接口不想使用所有的方法的情况)
Tags: PHP设计模式 PHP适配器模式
- 上一篇:Go与PHP的语法是如何对比
- 下一篇:最后一页
相关文章
- ·PHP设计模式-单例模式学习笔记(2015-12-10)
- ·php设计模式之单例模式实例分析(2021-05-14)
- ·PHP设计模式之装饰者模式代码实例(2021-05-26)
- ·PHP设计模式之适配器模式代码实例(2021-05-26)
- ·PHP 设计模式系列之 specification规格模式(2021-07-05)
- ·PHP设计模式之注册树模式分析(2021-09-01)
- ·PHP设计模式之装饰器模式实例详解(2021-09-03)
- ·PHP设计模式之PHP迭代器模式讲解(2021-11-13)
- ·PHP设计模式之简单工厂和工厂模式实例分析(2021-11-14)
- ·PHP设计模式之抽象工厂模式实例分析(2021-11-14)
- ·PHP设计模式之单例模式定义与用法分析(2021-11-14)
- ·PHP设计模式之策略模式原理与用法实例分析(2021-11-15)
- ·php设计模式之单例模式用法经典示例分析(2021-12-19)
- ·php设计模式之适配器模式原理、用法及注意事项详解(2021-12-22)
- ·详解PHP设计模式之依赖注入模式(2022-04-27)
- ·浅析php适配器模式(Adapter)(2021-04-30)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)