摘要:策略模式概念策略模式針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中此模式讓算法的變化獨立于使用算法的客戶。從而讓程序結構更靈活,具有更好的擴展性和維護性策略模式結構圖策略模式角色說明抽象策略角色定義所有支持的算法的公共接口。
策略模式概念
策略模式針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,此模式讓算法的變化獨立于使用算法的客戶。從而讓程序結構更靈活,具有更好的擴展性和維護性
策略模式結構圖 策略模式角色說明抽象策略角色:定義所有支持的算法的公共接口。通常是以一個接口或抽象來實現
具體策略角色:實現接口的具體算法
環境角色:持有抽象策略角色的引用
決策模式代碼實現實際場景中,為了避免在代碼的重復,這里引用鴨子游戲的列子,參考文獻: 《head first 設計模式》。
鴨子游戲中有個超類Durk,各自鴨子子類繼承超類,在超類中有個fly方法,然而鴨子子類中會存在橡皮鴨子類,而橡皮鴨子是不會fly的,可以使用重載的方法,把橡皮鴨的fly()方法設置為空,但是當不會飛的鴨子變多的時候,代碼重復就會越來越多,這個時候我們就可以用到策略模式來實現。
_flyBehavior = $object; } public function fly(){ return $this->_flyBehavior->fly(); } } $duck = new Duck(new FlyWithWings()); echo $duck->fly();總結
在實際場景中,如果應用需要變化之處,把他們獨立出來,多帶帶封裝,封裝好接口后,通過指定的接口實現類進行算法的變化
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22464.html
摘要:策略模式介紹策略模式定義了一系列的算法,并將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨立于使用它的客戶而獨立變化。使用策略模式的好處策略模式提供了管理相關的算法族的辦法。使用策略模式可以避免使用多重條件轉移語句。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試常考之設計模式——工...
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...
摘要:簡介策略模式定義了算法族,分別封裝起來,讓他們之間可以相互替換。策略模式提供了可以替換繼承關系的辦法。使用策略模式可以避免使用多重條件轉移語句。換言之,策略模式只適用于客戶端知道所有的算法或行為的情況。 簡介 策略模式定義了算法族,分別封裝起來,讓他們之間可以相互替換。該模式讓算法獨立于使用它的客戶而獨立變化。 組成 抽象策略角色: 策略類,通常由一個接口或者抽象類實現。 具體策略角...
摘要:設計模式系列之入門設計模式是一套被反復使用多數人知曉的經過分類編目的代碼設計經驗的總結。毫無疑問,設計模式于己于他人于系統都是多贏的設計模式使代碼編制真正工程化設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。 PHP設計模式系列之入門 設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易...
閱讀 3446·2021-10-14 09:42
閱讀 2736·2021-09-08 10:44
閱讀 1309·2021-09-02 10:18
閱讀 3614·2021-08-30 09:43
閱讀 2803·2021-07-29 13:49
閱讀 3729·2019-08-29 17:02
閱讀 1585·2019-08-29 15:09
閱讀 1041·2019-08-29 11:01