GoF设计模式之六 Adaptor- -

来源:百度文库 编辑:神马文学网 时间:2024/04/28 13:23:33

 

                                      

    从这里开始,将介绍第二部分-结构模式。
    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.jdon.com/designpatterns/adapter.htm(中文、java实例)
2、 http://www.dofactory.com/Patterns/PatternAdapter.aspx(英文、C#实例、UML)
3、 http://www.techscore.com/tech/DesignPattern/Adapter.html(日文、java实例、UML)推荐