国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

設計模式(1)---策略模式

2019-11-06 06:36:25
字體:
來源:轉載
供稿:網友

一、定義

策略模式:定義了算法族(將一組行為想象成一族算法),分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。

二、策略模式的結構

策略模式是對算法的包裝,是把使用算法的責任和算法本身分割開來,委派給不同的額對象管理。策略模式通常把一系列的算法包裝到一系列的策略類里面,作為一個抽象策略類的子類。也就是說,準備一組算法并將每一個算法封裝起來,使得它們可以互相互換。看下面的結構框圖:

image

我們由框圖得到三個角色: (1)環境角色(context):持有一個Strategy的引用; (2)抽象策略模式(Strategy)角色:這是一個抽象角色,通常由一個接口或抽象類實現。此角色給出所有的具體策略類所需的接口。 (3)具體策略角色(ConcreteStrategy):包裝了相關的算法或行為。

三、代碼實例

package Model;/** * Created by L_kanglin on 2017/3/6. */public class Context { //注意這是個接口 PRivate Strategy strategy; /* *構造一個函數,傳入一個具體策略對象 * @param strategy */ public Context(Strategy strategy) { this.strategy = strategy; } /* * 策略方法 * */ public void congtextInterface(){ strategy.strategyInterfece(); }}public interface Strategy { //策略方法,抽象方法,等著后面去實現 public void strategyInterfece();}public class ConcreteStrategyA implements Strategy { @Override public void strategyInterfece() { //進行相關的業務 }}public class ConcreteStrategyB implements Strategy { @Override public void strategyInterfece() { //進行相關的業務 }}public class ConcreteStrategyC implements Strategy { @Override public void strategyInterfece() { //進行相關的業務 }}/** * Created by L_kanglin on 2017/3/6. */public class Client { public static void main(String[] args){ //選擇并創建需要使用到的策略對象,一種多態的展示 Strategy strategy = new ConcreteStrategyA(); Context context = new Context(strategy); //執行業務 context.congtextInterface(); //然后執行各自的子方法 }}

從上面的實例中,策略模式僅僅是封裝算法,提供新的算法插入到已有的系統中,以及以前的算法從系統中淘汰的方法,策略模式并不決定何時使用某種算法,在什么情況下使用算法是由客戶端決定的。

四、分析

(1)策略模式保證了各個策略算法的平等性,對于一系列的具體實現,大家的地位是平等的,實現各個具體算法實現之間的相互切換,而它們彼此之間是沒有依賴的可以理解為是相同行為的不同實現; (2)運行期間,策略模式在同一個時刻只能使用一個具體的策略實現; (3)所有的具體策略類都有一些公有的行為。此時就應該把這些公有的行為放到共同的抽象策略角色Strategy中。

文章只是作為自己的學習筆記,借鑒了網上的許多案例,如果覺得闊以的話,希望多交流,在此謝過…


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 木兰县| 宾阳县| 麟游县| 九龙城区| 余姚市| 宣汉县| 自治县| 阳春市| 霍林郭勒市| 稻城县| 高安市| 内丘县| 山丹县| 平江县| 虞城县| 和平县| 石嘴山市| 杭州市| 邵阳县| 通州区| 比如县| 嘉定区| 灵璧县| 石首市| 华安县| 孝昌县| 阿拉善左旗| 青海省| 望都县| 尼勒克县| 梁平县| 汤阴县| 高邑县| 出国| 六盘水市| 邳州市| 西华县| 汉川市| 垫江县| 呼玛县| 盘山县|