适配器模式

  适配器是什么? 我理解的是就像生活中的插口转换器, 本来是USB接口的,你要想使用直流电,就得接上一个转换器。

用书上的例子举例:

  比如,在一个画图的小程序中,你已经实现了绘制点、直线、方块等图形的功能。而且为了让客户程序在使用的时候不用去关心它们的不同,还使用了一个抽象类来规范这些图形的接口。现在你要来实现圆的绘制,这时你发现在系统其他的地方已经有了绘制圆的实现。在你庆幸之余,发现系统中已有的方法和你在抽象类中规定的方法名称不一样!这可怎么办?修改绘制圆的方法名,就要去修改所有使用它的地方;修改你的抽象类的方法名,也要去修改所有图形的实现方法以及已有的引用。还有其它的方法没有?那就是适配器模式了。

适配器的组成:

目标角色: 定义client使用的接口。

被适配角色:这个角色有一个已经存在并使用了的接口,而这个接口是需要我们适配的。

适配器角色:它将“被适配角色”已经有的接口转换成为目标橘色希望的接口。

代码:

class Circle extends Shape
{
    //这里引用了TextCircle
   private TextCircle tc;
   public Circle ()
   {
        tc= new TextCircle(); //初始化
   }
    void public display()
   {
        tc.displayIt(); //在规定的方法里面调用TextCircle 原来的方法
   }
}

Target(目标角色)就是Sharp类,Circle就是适配器角色, TextCircle就是被适配器角色。


适配器模式和代理模式很类似,书上解释“两者的主要区别在于代理模式应用的情况是不改变接口命名的,而且是对已有接口功能的一种控制;而适配器模式则强调接口转换。”

不是很明白,期待以后对代理模式能更深入了解吧。

posted @ 2013-04-17 11:13  叶子盛忆  阅读(150)  评论(0编辑  收藏  举报