設計模式(一):策略模式(繼承,接口,組合的綜合運用)

一.繼承可能形成的問題有:算法

    1.很難知道一個基類應該具備的合理的行爲集合編程

    2.後續設計中對於基類的改變,牽一髮而動全身函數

二.相比於基類繼承,抽象出一些接口彷佛能更好的解決一中提到的問題1,2;但代碼重用性變差了設計

 

那麼如何更好的設計一個類體系呢?讓不變的東西,能夠獲得重用,讓變化的東西能夠實現靈活性,同時也不會使得代碼的重用性變差。。。繼承

 

三.作法:接口

    1.讓肯定不變的東西放在基類中,實現更好的代碼重用和邏輯上的繼承關係。構造函數

    2.讓變化的東西實現靈活性,咱們能夠對變化的東西進一步抽象爲接口,採用組合的方式在基類中放入變化東西的接口。方法

    3.同時爲了實現代碼的重用性,咱們對每一種變化的類型設計一個類,經過組合,這個類只須要寫一份代碼就能夠使用在各個地方。總結

    4.咱們能夠在基類的子類中對接口進行賦值,能夠直接在構造函數中對其賦以須要的實現接口的類,但爲了避免對實現編程,咱們其實更好的作法是實現一些set方法,動態地設定那些變化的類,以及在從此還會學到工廠模式。集合

繼承,接口,組合的綜合使用,使得咱們可以得到更好的類體系結構。

四.設計原則總結:

    1.抽取變化的模塊,與不變的模塊分離

    2.針對接口編程,而不是針對實現編程

    3.多用組合,少用繼承

五.策略模式(Strategy Pattern)的定義:

策略模式定義了算法族,分別封裝起來,讓它們之間能夠互相替換,此模式讓算法的變化獨立於使用算法的客戶。

相關文章
相關標籤/搜索