适配器模式--在NBA我需要翻译
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
在软件开发中,也就是系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
适配器模式包括两种类型:类适配器模式和对象适配器模式。
何时使用适配器模式:
在想使用一个已经存在的类,但如果他的接口,也就是他的方法和你的要求不相同时,就应该考虑用适配器模式。
要在双方都不太容易修改的时候在使用适配器模式适配,而不是一有不同时就使用它
1 //这是客户所期待的接口。目标可以是具体或抽象的类,也可以是接口。 2 public class Target { 3 public void request(){ 4 System.out.println("普通请求"); 5 } 6 }
适配器:
1 //Adapter(通过在内部包装一个Adaptee对象,把源接口转换成目标接口 2 public class Adapter extends Target{ 3 4 //建立一个私有的Adaptee对象 5 private Adaptee adaptee = new Adaptee(); 6 7 @Override 8 public void request() { 9 //这样就可以把表面上调用request()方法变成实际调用specificRequest() 10 adaptee.specificRequest(); 11 } 12 }
需要适配的类:
1 //需要适配的类 2 public class Adaptee { 3 public void specificRequest(){ 4 System.out.println("特殊请求!"); 5 } 6 }
1 //客户端 2 public class Client { 3 public static void main(String[] args) { 4 //对客户端来说,调用的就是Target的request()。但实际调用的是specificRequest() 5 6 Target target = new Adapter(); 7 target.request();//特殊请求! 8 } 9 }
UML图:
不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练更加容易维护、容易扩展和复用,只有这样才可以真正得到提高
--《来自大话设计模式》