从这里开始,将介绍第二部分-结构模式。 B1) Adapter (适配器模式) 定义: 将一个类的接口转换成另一个需要的接口。适配器使两个不兼容的接口能够协调工作。 迟迟没有继续写有两个原因,一是近期工作比较忙,二来对于这个模式我一直不能很好的理解,所以文中可能有些写得不恰当的地方。适配器(Adapter)与被适配者(Adaptee)之间的关系,有点类似于翻译的味道,做过外包项目的应该比较容易了解。假设,有一本日语的式样书的程序,交给一个不会日语的新人(即Adaptee)做,那么式样书上的要求他的不知道,没法完成。因此,公司请了会日语的翻译(即Adapter),那么翻译将日文翻译成中文告诉这个新人,新人就能够完成这本程序了,这个过程就是一个适配器模式。 public class Programmer { public Work zuoHTML() { //做HTML //make a HTML page } } public interface JapaneseDesign { public Work HTMLwotukuru(); //HTMLを作る(中文意思:做HTML) } 接着,请了翻译之后 public class Translator implements JapaneseDesign { private Programmer pg; public Translator() { pg = new Programmer(); } public Work HTMLwotukuru() { return pg.zuoHTML(); } } 这样,只要将式样书交给翻译而不是直接交给程序员,就能完成这个工作了。上面代码是Adaptor模式的一种实现方式,叫做转让,就是将事情交给别的类完成。还有一种方式,叫做继承,下面就给出继承的代码。 public class Programer4JD extends Programmer implements JapaneseDesign { public Work HTMLwotukuru() { return zuoHTML(); } } 也就是新人成长了,会日语了,就不需要翻译,自己就能完成。由于使用了继承,扩展性比较好,因此,这种方式相对转让方式更为常用,很多jdk的常用类都用到这种方式。
参考: 1、 http://www./designpatterns/adapter.htm(中文、java实例) 2、 http://www./Patterns/PatternAdapter.aspx(英文、C#实例、UML) 3、 http://www./tech/DesignPattern/Adapter.html(日文、java实例、UML)推荐
|