适配器模式续

上一篇文章中原作者讲解到的适配器模式,而对于默认的适配器模式,它的核心归结如下:当你想实现一个接口但又不想实现所有接口方法,只想去实现一部分方法时,就用默认的适配器模式,他的方法是在接口和具体实现类之间添加一个抽象类,而用抽象类去实现目标接口的所有方法。而具体的实现类只需要覆盖其需要完成的方法即可。示例代码如下:

接口类:

图片1

抽象类:

图片2

实现类:

图片3

而在具体的工作中的应用,通常以下两种形式的应用较多:

共有两类适配器模式:

对象适配器模式

— 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。

类适配器模式

— 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。

因此这时候就常常要区分源、目标和适配类,适配就是由“源”到“目标”的适配,而当中链接两者的关系就是适配器。它负责把“源”过度到“目标”。

而对于上一篇作者的文章中,很容易看出来,就是用对象适配器模式的想法去写的,也并没有去改变源(ServerFirst类)的结构。而对于另一种方法,类适配器模式,按照上一篇作者的例子,便可容易的进行改写,代码如下:

接口:

图片4

 

接下来就是定义适配类去继承源类,并且实现接口,代码如下:

图片5

应用代码同样为:图片6的形式。

现在来对这两种模式做个分析:

首先对于类适配器模式,很明显,由于java的单继承性,因此对于适配的源也是单一的,代码实现上不用再去判断哪个源这样的逻辑;对于对象适配器,一方面弥补了java上类适配器模式单一源方面的不足,但是呢另一方面如源的数目若较多,具体实现的条件判断分支会增多。代码逻辑就不会那么的清晰了。

最后,对于适配器模式,主要用于这两种情况(网上别人说的,不知道他有没有相应的经验):1)、系统需要使用现有的类,但现有的类不完全符合需要。2)、将彼此没有太大关联的类引进来一起完成某项工作(对象适配)。

anyShare分享到:
This entry was posted in 新闻动态. Bookmark the permalink.

发表评论