目录

前面我们介绍了 创建型 的设计模式,接下来要介绍的是 结构行为型 设计模式。

说明

适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。

主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。

类的适配器代码示例

<?php

namespace DesignPattern;

/**
 * Description of AdapterDemo
 *
 * @author jm
 */
class AdapterDemo
{
    //put your code here
    public static function main()
    {
        (new Adapter())->method1();
    }
}

class Source {  
  
    public function method1() {  
        print_r("這是原來類的方法method1");  
    }  
}

interface IAdapter {  
  
    /* 与原类中的方法相同 */  
    public function method1();  
  
    /* 新类的方法 */  
    public function method2();  
}

class Adapter extends Source implements IAdapter {  
  
    public function method2() {  
        print_r("這是適配器的方法method2");  
    }  
}

AdapterDemo::main();

输出:

這是原來類的方法method1

小结

适配器模式,将一个类的接口转化成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类。但是接口又与复用环境要求不一致的情况。

两个类所做的事情相同或相似,但是具有不同的接口时要使用它。

在双方都不太容易修改的时候再使用适配器模式适配。

类的适配器模式:当希望将一个类 转换成满足另一个新接口 的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。

对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。

接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。


本文部分收藏来自互联网,仅用于学习研究,著作权归原作者所有,如有侵权请联系删除

markdown @TsingChan