了解设计模式 之 结构模式(一) -- 适配器模式

 
设计模式中的结构模式是关于结构的,包括聚合,组合,继承等等,主要使用这些结构来表示程序的逻辑,主要包括下面这些模式:适配器模式(Adapter),桥接模式(Bridge),组合模式(Composite),装饰模式(Decorator),外观模式(Facade),享元模式(Flyweight),代理模式(Proxy)。下面的一些列文章将会逐个讲述。

首先来了解一下适配器模式。

1. 适配器模式(Adapter Pattern)

适配器模式就是两个对象之间的接口的适配,使两个接口不兼容的类可以一起工作,举一个现实点的例子。

比如说朋友去日本出差,让他捎回来一个笔记本,可是这个笔记本使用的是110V的电压,并且用的是两项的插槽,这个时候就要用一个电源适配器了,笔记本插在电源适配器上,适配器接到一个220V的三项的插座上。这个就是一个适配器的例子,在程序中,也可以模拟这种结构,也就实现了适配器模式了。

上边的这个过程用Java语言来进行描述的话,如下所示:

首先是二项插头应该使用的两项插座接口。

Java代码 复制代码  收藏代码
  1. // 两项插座   
  2. public interface Term2PlugSocket {   
  3.        
  4.     public void plugin2term();   
  5.        
  6. }  


但是现在家里只有三项插座。

Java代码 复制代码  收藏代码
  1. // 三项插座   
  2. public class Term3PlugSocket {   
  3.   
  4.     public void plugin3term() {   
  5.         System.out.println("plug in 3 term socket");   
  6.     }   
  7.   
  8. }  


所以就需要一个2-3项的适配器了。

Java代码 复制代码  收藏代码
  1. // 2-3项插座适配器   
  2. public class Term2to3Adapter implements Term2PlugSocket {   
  3.   
  4.     private Term3PlugSocket term3PlugSocket = null;   
  5.   
  6.     public Term2to3Adapter(Term3PlugSocket term3PlugSocket) {   
  7.         this.term3PlugSocket = term3PlugSocket;   
  8.     }   
  9.   
  10.     @Override  
  11.     public void plugin2term() {   
  12.         System.out.println("execute adapter action");   
  13.   
  14.         // 调用目标的方法   
  15.         term3PlugSocket.plugin3term();   
  16.     }   
  17.   
  18. }  


最后是两项插头,这个相当于Client。

Java代码 复制代码  收藏代码
  1. // 两项插座   
  2. public class Term2Connector {   
  3.   
  4.     // 把插头插入插座   
  5.     public void connect() {   
  6.         Term3PlugSocket term3PlugSocket = new Term3PlugSocket();   
  7.   
  8.         // 2-3项插座适配器   
  9.         Term2PlugSocket adapter = new Term2to3Adapter(term3PlugSocket);   
  10.   
  11.         // 适配3项插座   
  12.         adapter.plugin2term();   
  13.     }   
  14.        
  15.     public static void main(String[] args) {   
  16.         Term2Connector connector = new Term2Connector();   
  17.         connector.connect();   
  18.     }   
  19.   
  20. }  


适配器模式的定义是:将一个类的接口转换成了客户端需要的接口,使不兼容的接口可以一起工作。

另外,还有一个进一步的话题需要讨论一下,适配器模式其实是分两种的,对象适配器(Object adapter)和类适配器(Class adapter)。上边的例子是对象适配器,而Java是不支持类适配器的,因为类适配器是需要多重继承的。

下面给出适配器模式的类图。

对象适配器:


类适配器:

  • 大小: 12.1 KB
  • 大小: 11.7 KB
  • 查看图片附件

你可能感兴趣的:(java,设计模式,Decorator,String,Class,interface)