天天看點

設計模式.政策模式

政策模式跟抽象工廠非常相似,基本邏輯是根據需要執行個體化出需要用的類。不同的是政策模式需要調用者非常清晰的知道有哪些政策,各個政策的調用規則,而抽象工廠的話,需要知道有哪些類,找到調用者需要用的類。 

沒有找到兩者根本的不同點。其實本質都是根據需要來找合适的算法類。 

寫這個之前,找過一些文章

1. Context類與工廠類的差別: 

政策模式與簡單工廠模式的主要差別是Context類與工廠類的差別。 

A. 政策模式的Context類在簡單工廠模式中對應的是工廠類。工廠類隻提供一個靜态方法,負責建立子類的執行個體,并傳回給調用者(即用戶端)。 

B. 在政策模式中,Context類在自己的構造函數中建立具體算法(子類)的執行個體,當然構造函數不會傳回任何值給調用者。但是Context類提供了一個/一些方法,用來封裝在基類中定義的算法接口,并傳回結果給用戶端。從這個意義上說,政策模式就是用來封裝算法的。實際上它可以用來封裝任何類型的規則。但是簡單工廠模式的工廠類就沒有提供這樣的能力。 

2. 用戶端的差別: 

政策模式與簡單工廠模式的用戶端的差別并不是主要的,但是也有一些。 

A. 對于簡單工廠的用戶端,在使用的時候必須知道工廠類和基類這兩個類。 

B. 對于政策模式的用戶端, 

B1. 若如7樓的代碼所示,則它必須知道Context類和各種具體算法的類,相比起簡單工廠來說,它暴露的資訊太多。 

B2. 若如我正文中改裝以後,則用戶端隻需要知道Context類就足夠了。

     本文轉自wengyuli 51CTO部落格,原文連結:http://blog.51cto.com/wengyuli/586766,如需轉載請自行聯系原作者

繼續閱讀