设计模式——适配器模式

Posted 刘永祥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式——适配器模式相关的知识,希望对你有一定的参考价值。

适配器模式就是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适配器模式分为两种,一种是类适配器模式,一种是对象适配器模式(也就是跟我们的组合模式配合使用)
适用性:
1.你想使用一个已经存在的类,而它的接口不符合你的需求。
2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
在我们的日常生活中所使用的充电器就是最好的适配器模式,我们的手机都是需要充电的,如果没有充电器的话,我们的手机是不可能自己会接收。

下面我们就以手机充电来
电源

public class PowerSupply 
    public void request()
        System.out.println("我是电源");
    

接口

public interface Target 
    void handleRequest();

充电器

public class Adapter extends PowerSupply implements Target 
    @Override
    public void handleRequest() 
        super.request();
    

手机

public class Phone extends Activity
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MainActivity mainActivity = new MainActivity();
        Target target = new Adapter();
        mainActivity.test(target);
    

    public void test(Target t)
        t.handleRequest();
    

上面的适配器模式是一个类适配器模式,也就是说Adapter extends PowerSupply 因为继承只能单继承,导致不够灵活,所以我们还有另一种适配器可以跟我们的组合一起使用叫做对象适配器模式。
修改后的对象适配器模式为

public class ObjectAdapter implements Target 
    private PowerSupply powerSupply;

    public ObjectAdapter(PowerSupply powerSupply) 
        this.powerSupply = powerSupply;
    

    @Override
    public void handleRequest() 
        powerSupply.request();
    

手机里面的调用就有了稍微的改变

public class Phone extends Activity
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MainActivity mainActivity = new MainActivity();
        PowerSupply powerSupply = new PowerSupply();
        Target target = new ObjectAdapter(powerSupply);
        mainActivity.test(target);
    

    public void test(Target t)
        t.handleRequest();
    

适配器模式到这里就结束了,如有疑问欢迎留言。

以上是关于设计模式——适配器模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 结构型模式 -- 适配器模式(概述类适配器模式对象适配器模式适配器模式适用场景JDK源码解析(I / O流))

结构型模式-适配器模式(不兼容结构的协调)

23种设计模式(17):适配器模式

Java设计模式系列适配器模式及适用场景详解

设计模式6适配器模式

结合JDK源码看设计模式——适配器模式