`

10.适配器模式详解

 
阅读更多
和尚接口:
 public   interface  和尚   { 

 void  吃斋(); 

 void  打坐(); 

 void  练武(); 

 void  睡觉(); 

}  


作为适配器的抽象类 天星



 public   abstract   class  天星  implements  和尚   { 

 public   void  吃斋()   { 



}  

 public   void  打坐()   { 


}  

 public   void  睡觉()   { 


}  

 public   void  练武()   { 


}  


然后是具体实现 鲁智深
 public   class  鲁智深  extends  天星   { 


 public   void  练武()  { 


}  



1.适配器模式在这里应该是,鲁智深拥有和尚的所有功能如吃斋(),打坐(),但是练武这个功能对鲁智深和别的和尚不同,所以要单独配置。

2.使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式
  两个类所做的事情相同或相似,但是具有不同的接口时要使用它

3.当客户类调用适配器的方法时,在适配器类的内部调用适配者类的方法,这个过程对客户类是透明的,客户类并不直接访问适配者类。因此,适配器可以使由于借口不兼容而不能交互的类可以一起工作(work together)。

4.当你实现某个接口,你必须实现它所有的方法。
如果这个接口有很多的方法,而你只需要关注其中的一个,在这种情况下,适配器就是一个最佳选择了。

5.适配器就好像一个转接器一样
有些参数可能不接受某些接口类型
这时使用适配器将这些接口,经过某些处理后实现另一接口类型,就可以接上去了

二、 /** */

/**   
* 源角色   
*/    
public class Adaptee {    
public int get220v(){    
return 220;    
}    
}   
  


/** */

/**   
* 目标角色   
*/    
public interface Target {    
int get110v();    
int get220v();    
}   


/** */
/**   
* 适配器角色:扩展源角色,实现目标角色,从而使得目标角色改动时候,不用改动源角色,只要改动适配器   
*/    
public class Adapter extends Adaptee implements Target{    
public int get110v(){    
return 110;    
}    
}   

 
/** */


/**   
* 客户端   
*/    
public class Client {    
public static void main(String rags[]) {    
new Client().test();    
}   
  
public void test() {    
Target target = new Adapter();    
int v1 = target.get110v();    
int v2 = target.get220v();    
}    
}  


适配器通过扩展源角色,同时实现目标接口,从而满足了同时提供220v,110v电压的要求。
JDK中体现:
(1)java.io.InputStreamReader(InputStream)
(2)java.io.OutputStreamWriter(OutputStream)

本文出自:
http://www.blogjava.net/toby/archive/2010/09/26/332939.html?opt=admin
另外一个比较形象的例子:
http://blog.csdn.net/zl3450341/article/details/6905635
http://www.cnblogs.com/forlina/archive/2011/06/27/2091105.html
分享到:
评论

相关推荐

    Java开发适配器模式详解

    我想现在好多公司对设计模式都很重视,希望可以帮到大家,因为适配器设计模式在好多公司都用到了,有好东西自然要与大家同享了,希望各位事业发达,人生步步高升

    深入理解JavaScript系列(39):设计模式之适配器模式详解

    主要介绍了深入理解JavaScript系列(39):设计模式之适配器模式详解,适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),需要的朋友可以参考下

    C#学习笔记之适配器模式详解

    什么是适配器模式?  适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。  Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 什么时候运用适配器模式?  在想使用一个...

    Python 程序语言设计模式思路-结构型模式:适配器模式-将不兼容的接口转换为可兼容的接口

    本文将探讨Python中的适配器模式,介绍其应用领域,提供代码实例及详解,并分析其优缺点,最终得出结论。适配器模式在以下几种场景中有广泛的应用: 1. 遗留系统整合:在需要将新系统与遗留系统整合时,适配器模式...

    详解JavaScript实现设计模式中的适配器模式的方法_.docx

    详解JavaScript实现设计模式中的适配器模式的方法_.docx

    Java适配器模式应用之电源适配器功能详解

    主要介绍了Java适配器模式应用之电源适配器功能,较为详细的分析了适配器模式的概念、原理及Java基于适配器模式实现电源适配器功能的相关操作技巧与注意事项,需要的朋友可以参考下

    JavaScript适配器模式详解

    适配器模式:将一个接口转换成客户端需要的接口而不需要去修改客户端代码,使得不兼容的代码可以一起工作。 适配器主要有3个角色组成: (1)客户端:调用接口的类 (2)适配器:用来连接客户端接口和提供服务的...

    Android Spinner与适配器模式详解及实例代码

    主要介绍了Android Spinner与适配器模式详解相关资料,并附代码实例,需要的朋友可以参考下

    常见的软件设计模式详解

    常见的软件设计模式详解,包括策略模式、装饰者模式、适配器模式、观察者模式

    详解适配器与外观模式

    本文当详细解释了适配器模式和外观模式的意图,效果及工作方式。两个模式之间的共同点和不同点。

    PHP设计模式之适配器模式定义与用法详解

    本文实例讲述了PHP设计模式之适配器模式定义与用法。分享给大家供大家参考,具体如下: 适配器很容易理解, 大多数人家庭都有手机...类适配器模式很简单, 不过与对象适配器模式相比, 类适配器模式的灵活性弱些, 类适配

    深入理解JavaScript系列.chm

    39.设计模式之适配器模式 40.设计模式之组合模式 41.设计模式之模板方法 42.设计模式之原型模式 43.设计模式之状态模式 44.设计模式之桥接模式 45.代码复用模式(避免篇) 46.代码复用模式(推荐篇) 47.对象创建...

    Python设计模式之适配器模式原理与用法详解

    主要介绍了Python设计模式之适配器模式原理与用法,结合实例形式分析了适配器模式的相关概念、原理及Python实现技巧,需要的朋友可以参考下

    Java经典设计模式之适配器模式原理与用法详解

    主要介绍了Java经典设计模式之适配器模式,简单说明了适配器模式的概念、原理,并结合实例形式分析了java适配器模式的用法与相关注意事项,需要的朋友可以参考下

    java 设计模式之适配器模式的详解

    主要介绍了java 设计模式之适配器模式的详解的相关资料,需要的朋友可以参考下

    《Java设计模式》详解

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

    GoF 23种设计模式的详解与应用

    结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...

    PHP设计模式之适配器模式(Adapter)原理与用法详解

    这个适配器模式,就是为了将一个类的接口转换成客户希望的另外一个接口,并且使用原本不兼容的而不能在一起工作的那些类可以在一起工作。它的核心思想就是把对某些相似的类的操作转化为一个统一的“接口”(这里是...

Global site tag (gtag.js) - Google Analytics