l

2013年8月6日 星期二

重新整理Adapter Pattern

August 04 20:18~21:05;August 05 22:00~22:45

螢幕快照 2013-08-04 下午8.58.43

 

今天介紹Adapter模式,在《尋找Force實驗3:Adapter Pattern篇》Teddy找過一次Adapter的problem與force;在《讀Clean Code有感:Adapter的另類用途》Teddy快速回顧了adapter與pluggable adapter的應用,鄉民們可以參考一下這兩篇的內容。接下來直接看結果。

***

Name:Adapter

Context:設計出可重複使用的類別或軟體元件是軟體開發者的理想,但卻是一件不容易做得到事。有時候,即使一個已經存在的類別在功能上接近甚至完全符合客戶端的需求,但是卻因為與客戶端所規範的介面不符,導致無法被直接重複使用。

Problem:如何重複使用一個既存的類別?

Force:

  • 你可以直接修改既存類別的介面以符合客戶端的要求,但這麼作:
    • 需要拿到既存類別的原始碼。
    • 修改後的版本與原先的既存類別不相容,等於產生一個新的類別,但其中卻存在著許多與原先既存類別相似的重複程式碼。
  • 你想要建立一個可被重複使用的類別,但是你並不知道這個類別未來會被那些人使用。
  • 你希望不只是既存類別,連它的子類別也可以一併被重複使用。

Solution:新增一個Adapter類別,透過Adapter將既存類別(Adaptee)的介面轉成客戶端所需要的介面。在支援多重繼承的程式語言中,讓Adapter同時繼承客戶端需要的介面(定義在Target類別中)與Adaptee,達到轉介Adaptee介面的目的。在不支援多重繼承的程式語言中,讓Adapter繼承Target,並且在Adapter中包含一個Adaptee的物件。當客戶端透過Target介面呼叫Adapter時,Adapter再轉呼叫Adaptee,藉此來達到介面轉接的目的。

 

螢幕快照 2013-08-05 下午10.38.27

***

連續寫了五篇pattern的文章,有點乏了,應該要休息一下換點口味。

***

友藏內心獨白:5/23,完成率21.74%。

沒有留言:

張貼留言