天天看點

擴充卡模式

擴充卡模式其實很簡單,或者說學了設計模式到現在,雖然每次看到各種名字的設計模式就覺得很高端,但當真正了解過後才知道其實也沒有那麼玄乎,有的東西在我們平時的時候都已經用到過了。比如這次我們要說的擴充卡模式,說白了,就是以前的代碼接口,和我們用戶端需要調用的接口不一緻,但以前代碼功能又是我們想要的功能。這個時候我們不必去修改以前代碼的接口,我們隻需要新增加一個類的,這個類符合用戶端需要調用的接口,而在這個是适配類裡調用我們以前代碼的接口,這樣就能做到不修改以前代碼的接口,也不修改用戶端就能實作接口比對。

擴充卡模式
UML類結構同樣很簡單,代碼就不難寫出。

1 package day_26_adapter;
 2 
 3 /**
 4  * 用戶端期待通路的目标接口,或者是類
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public interface Target {
10     void request();
11 }      
1 package day_26_adapter;
 2 
 3 /**
 4  * 需要适配的類
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public class Adaptee {
10     public void specificRequest(){
11         System.out.println("這是最終要用到的方法,或者需要适配的方法");
12     }
13 }      
1 package day_26_adapter;
 2 
 3 /**
 4  * 擴充卡,适配需要被适配的接口或類,以此提供接口給用戶端
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public class Adapter implements Target {
10     private Adaptee adaptee = new Adaptee();
11     
12     /* (non-Javadoc)
13      * @see day_26_adapter.Target#request()
14      */
15     @Override
16     public void request() {
17         adaptee.specificRequest();
18     }
19 
20 }      
1 package day_26_adapter;
 2 
 3 /**
 4  * 用戶端
 5  * @author turbo
 6  *
 7  * 2016年9月26日
 8  */
 9 public class Client {
10     public static void main(String[] args){
11         Target target = new Adapter();
12         target.request();
13     }
14 }      

擴充卡模式,并不是什麼很高端看不懂的模式,也很簡單。我們最後利用《大化設計模式》中的例子畫出UML圖(不再寫出代碼),一家籃球俱樂部裡有一名外籍籃球運動員,但是教練和外籍運動員語言不同,當然不能換教練更不能換運動員,這個時候就有一個翻譯在其中,翻譯者充當的就是适配類角色,我們用這實際的例子來看看UML類結構是怎樣的,以此來加深我們對擴充卡模式的了解。

擴充卡模式

不積跬步,無以至千裡;不積小流,無以成江海。

上一篇: 橋接模式
下一篇: JUnit學習