设计模式(7)--适配器模式

什么是适配器模式

  假如你电脑现在没有电了,那么此时肯定就是拿出充电器来给电脑充电,但是墙壁上的插座是双孔的,但是你的电脑充电器需要插三孔的,那么这时候你可能就会找个插座,上面有两孔和三孔,你就可以将你的电脑充电器插到这个插座上,然后将这个插座插到墙壁上的插孔。那么这样你的电脑就可以充电了,在这一情形中这个插座就相当于一个适配器,它间接的将三孔连接到了两孔上,当然电脑充电器的插孔仍然是三孔,没有发生本质的变化。

如何使用适配器模式

  定义一些接口,如Adaptee(客户持有对象,需要进行转换)、Target(目标对象),然后简单书写一些实现类

//Target.java
public interface Target {

    public void request(String message);
}

//TargetImpl.java
public class TargetImpl implements Target {

    @Override
    public void request(String message) {
        System.out.println("tagert:"+message);
    }

}

//Adaptee.java
public interface Adaptee {

    public void specificRequest(String message);
}

//AdapteeImpl.java
public class AdapteeImpl implements Adaptee {

    @Override
    public void specificRequest(String message) {
        System.out.println("adaptee:" + message);
    }

}

  接下来就编写一个适配器将Adaptee适配成Target,但是Adaptee本身依然没有变化。

public class Adapter implements Target {

    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void request(String message) {
        adaptee.specificRequest(message);
    }
}

  编写适配器要注意一下几点:

    1.该类需要实现目标类接口;

    2.该类中需要有一个原有类接口的属性;

    3.最好就是在构造该适配器时就初始化原有类接口属性值;

  接下来就是进行测试了

public class Test {

    public static void main(String[] args) {
        Adaptee adaptee = new AdapteeImpl();
        // 经过适配器转换,这个类就可以当做Target类进行使用了
        Adapter adapter = new Adapter(adaptee);
        adapter.request("hello");
    }
}

  相信聪明的你已经知道什么是适配器模式了

posted @ 2017-05-04 17:49  逆倒尘光  阅读(171)  评论(0编辑  收藏  举报