1、簡單工廠模式如圖 代碼: 缺點:簡單工廠模式需要客戶端認識兩個類,Cash和CashFactory 優點:子類的實例化被工廠封裝了起來,客戶端看不到 2、策略模式如圖 代碼: 缺點:客戶端(測試端)完全暴露了實現的子類 優點:策略模式的優點是簡化了單元測試,因為每一個演算法都有自己的類,可以通過自 ...
1、簡單工廠模式如圖
代碼:
缺點:簡單工廠模式需要客戶端認識兩個類,Cash和CashFactory
優點:子類的實例化被工廠封裝了起來,客戶端看不到
2、策略模式如圖
代碼:
public class Context{ Strategy strategy; public Context(Strategy strategy){ this.strategy = strategy; } public double getResult(double money){ return strategy.acceptCash(money); } }
缺點:客戶端(測試端)完全暴露了實現的子類
優點:策略模式的優點是簡化了單元測試,因為每一個演算法都有自己的類,可以通過自己的介面進行單元測試
我們需要做的是把簡單工廠模式和策略模式結合起來,做到效果的最優
優點:這樣我們在客戶端實例化的是Content的對象,調用的是Content的方法getResult這使得具體的收費演算法徹底與客戶端分離,連演算法的父類Cash都不讓客戶端認識