java适配器模式
http://www.blogjava.net/fancydeepin/archive/2012/08/05/java_pattern_Adapter.html
適配器模式(Adapter 模式),將一個類的接口轉換成客戶希望的另外一個接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
1. 類的適配器模式結構圖:
從圖中可以看出,Adaptee 類(源類)并沒有 operation2() 這個方法,而客戶端正期待這個方法,為使客戶端能夠使用 Adaptee 類,在此為其提供了一個中間環節,
即 Adapter 類(適配器類),把 Adaptee 的 API 與?Target 的 API 銜接起來,在這里,Adapter 與 Adaptee 是繼承關系,這就決定了這個適配器的模式是類。
示意圖的實現源碼:
package pattern.adapter; /*** -----------------------------------------* @描述 源類(需要適配的類)* @作者 fancy* @郵箱 fancydeepin@yeah.net* @日期 2012-8-5 <p>* -----------------------------------------*/ public class Adaptee {public void operation1(){//do other things here} }package pattern.adapter; /*** -----------------------------------------* @描述 目標接口* @作者 fancy* @郵箱 fancydeepin@yeah.net* @日期 2012-8-5 <p>* -----------------------------------------*/ public interface Target {public void operation1();public void operation2();}package pattern.adapter; /*** -----------------------------------------* @描述 適配器* @作者 fancy* @郵箱 fancydeepin@yeah.net* @日期 2012-8-5 <p>* -----------------------------------------*/ public class Adapter extends Adaptee implements Target{public void operation2(){//do other things here} }
2. 對象的適配器模式結構圖:
從圖中可以看出,Adaptee 類(源類)并沒有 operation2() 這個方法,而客戶端正期待這個方法,為使客戶端能夠使用 Adaptee 類,在此為其提供了一個包裝類,
即 Adapter 類(適配器類),它包裝了一個 Adaptee 類的實例,從而此包裝類能夠把 Adaptee 的 API 與?Target 的 API 銜接起來,在這里,Adapter 與 Adaptee 是委派關系,
這就決定了這個適配器的模式是對象。
示意圖中的 Target 和 Adaptee 源代碼不變,下面來看一下 Adapter 類的源碼:
package pattern.adapter; /*** -----------------------------------------* @描述 適配器* @作者 fancy* @郵箱 fancydeepin@yeah.net* @日期 2012-8-5 <p>* -----------------------------------------*/ public class Adapter implements Target{private Adaptee adaptee;public Adapter(Adaptee adaptee){this.adaptee = adaptee;}@Overridepublic void operation1() {adaptee.operation1();}@Overridepublic void operation2() {//do other things here}}
總結
- 上一篇: java 装饰器模式
- 下一篇: java静态内部类(嵌套类)