August 04 20:18~21:05;August 05 22:00~22:45
今天介紹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,藉此來達到介面轉接的目的。
***
連續寫了五篇pattern的文章,有點乏了,應該要休息一下換點口味。
***
友藏內心獨白:5/23,完成率21.74%。
沒有留言:
張貼留言