设计模式(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"); } }
相信聪明的你已经知道什么是适配器模式了