首页后端开发PHP一起看看PHP设计模式之适配器模式

一起看看PHP设计模式之适配器模式

时间2024-02-02 06:55:03发布访客分类PHP浏览585
导读:收集整理的这篇文章主要介绍了一起看看PHP设计模式之适配器模式,觉得挺不错的,现在分享给大家,也给大家做个参考。php设计模式之适配器模式生活场景问题引入:假如需要去国外旅游,游玩,现在电子产品很丰富,但是每个电子产品都是需要电源来做驱动,...
收集整理的这篇文章主要介绍了一起看看PHP设计模式之适配器模式,觉得挺不错的,现在分享给大家,也给大家做个参考。

php设计模式之适配器模式

  1. 生活场景问题引入:

假如需要去国外旅游,游玩,现在电子产品很丰富,但是每个电子产品都是需要电源来做驱动,手机,电脑,相机。。。但是又有一个很显示的问题,电子产品是
很消耗电量的,电量没有了,就需要充电,在我们国家,我们买的电子产品出场带的电源充电器,一般都是220V的电压,但是世界很大,每个国家的要求(规定)
又是不同的,比如美国就是120V

  1. 原理:

将一个类的接口转换为另外一种接口,让原本接口不兼容的类可以兼容。

用户调用适配器转化出来的目标接口方法,适配器再去调用被适配者的相关接口方法

  1. 好处:

用户是看不到被适配者,属于解耦的操作

  1. 适配器模式属于结构型的设计模式

  2. 适配器模式的三种实现方式

一、 类适配器

根据上面的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";
    }
}
    

三、接口适配器(缺省适配器模式)

当不需要全部实现接口提供的方法时,可以先设计一个抽象类实现接口,并为接口提供默认的的空方法实现,那么改抽象类的子方法就可以有选择的覆盖父类的某
些方法来实现需求,(适用于一个接口不想使用所有的方法的情况)

相关学习推荐:PHP编程从入门到精通

以上就是一起看看PHP设计模式之适配器模式的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 一起看看PHP设计模式之适配器模式
本文地址: https://pptw.com/jishu/596507.html
了解PHP yield的高级用法 学习PHP-cli 模式在终端输出彩色标记文字以及动态内容

游客 回复需填写必要信息