以下絕大部分內容**大話設計模式(c++)
定義演算法家族,分別封裝起來,讓它們之間可以互相替換,讓演算法變化,不會影響到使用者
good:適合類中的成員以方法為主,演算法經常變動;簡化了單元測試(因為每個演算法都有自己的類,可以通過自己的介面單獨測試。 策略模式和簡單工廠基本相同,但簡單工模式只能解決物件建立問題,對於經常 變動的演算法應使用策略模式。
bug:客戶端要做出判斷
(一)策略與工廠的結合
class
coperation
};
classaddoperation
:class
coperation
virtual
double
getresult
()
};
classcontext
}
double
getresult()
};
intmain()
單一職責原則
就乙個類而言,應該僅有乙個引起它變化的原因。 如果乙個類承擔的職責過多,就等於把這些職責耦合在一起, 乙個職責的變化可能會削 弱或者抑制這個類完成其它職力這種耦合會導制脆弱的設計,當變化發生時,設計會 遭受到意想不到的破壞。 如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就具有多於乙個的職責。
開放――封閉原則
軟體實體可以擴充套件,但是不可修改。即對於擴充套件是開放的,對於修改是封閉的。面對需求,對程式的改動是通過增加**來完成的,而不是改動現有的**。 當變化發生時,我們就建立抽象來隔離以後發生同類的變化。
黎克特制代換原則
乙個軟體實體如果使用的是乙個父類的話,那麼一定適用其子類。而且它察覺不出父類物件和子類物件的區別。也就是說:在軟體裡面,把父類替換成子類,程式的行為沒有
變化。
依賴倒轉原則
抽象不應該依賴細節,細節應該依賴抽象。即針對介面程式設計,不要對實現程式設計。高層模組不能依賴低層模組,兩者都應依賴抽象。
設計模式學習 策略模式
看完了策略模式的講解,然後將之於之前的簡單工廠模式對比了一下,策略模式就是將具體的演算法變化封裝了一下,可以將兩者結合一起使用,這樣的話封裝度會更加高一點,而且在更改演算法和新增演算法的時候更加方便。大話設計模式 書中是用商場收銀做例子,我將之用簡單工廠模式做了之後,現在把之前的計算例子再拿出來給一...
設計模式學習 策略模式
使用策略模式可以代替多重if else和switch語句,讓 維護變得更加簡單,乍一看跟工廠模式一模一樣,下面是個簡單的例子。策略模式包含以下三種角色 抽象策略角色 定義策略介面 public inte ce weather具體策略角色 實現策略介面 author jhz date 18 10 31...
設計模式學習筆記 策略模式
我覺得策略模式與工廠方法模式極其相似!策略模式 工廠方法模式 如果單從圖來看,看不出有何相似之處。但看看呼叫方法就知道了 策略模式 context context new context abstractstrategy strategy 採用哪種策略,由呼叫方決定 strategy new con...