定義一個通用的介面
當「咖啡機」(CoffeeMachine
)有很多種型號時,而顧客只需要其中一種,你可以使用介面或繼承來解決這個問題。這樣你就可以定義一個通用的介面或基類,然後為不同型號的咖啡機建立具體的實現。顧客只會依賴於這個通用的介面,而不必知道具體是哪種型號的咖啡機。
使用介面來處理不同型號的咖啡機
- 定義一個
ICoffeeMachine
介面,這個介面描述咖啡機的通用功能,比如MakeCoffee()
。 - 為不同型號的咖啡機實作這個介面,例如:
BasicCoffeeMachine
和AdvancedCoffeeMachine
。 - 顧客(
Customer
)只依賴ICoffeeMachine
介面,而實際上是哪一種咖啡機,則可以在建立顧客的時候傳入。
代碼示例:
1 | // 定義咖啡機的通用介面 |
解釋:
ICoffeeMachine
介面:這個介面定義了所有咖啡機應該具備的功能,比如MakeCoffee()
。- **
BasicCoffeeMachine
和AdvancedCoffeeMachine
**:這兩個類別分別代表不同型號的咖啡機,都實作了ICoffeeMachine
介面,但具體的製作咖啡過程不同。 Customer
類別:顧客依賴於ICoffeeMachine
介面,而不依賴具體的咖啡機型號。因此,在顧客的建構子中,我們可以傳入任何實作了ICoffeeMachine
介面的咖啡機。Main
方法:在主程式中,我們可以選擇不同型號的咖啡機(BasicCoffeeMachine
或AdvancedCoffeeMachine
),然後將它傳入Customer
,顧客只需要使用咖啡機製作咖啡,無需關心具體型號。
好處:
- 靈活性:你可以輕鬆地新增不同型號的咖啡機,而不需要修改顧客的程式碼。
- 依賴倒置原則:顧客依賴於介面或抽象,而不是具體的實作,這讓程式碼更具彈性與可擴展性。
這樣的設計模式常見於大型應用程式中,有助於處理依賴關係和實現功能的多樣化。