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

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

設計模式之策略模式

2019-11-17 02:45:28
字體:
來源:轉載
供稿:網友

設計模式之策略模式

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

二、設計原則

1、找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。2、針對接口編程,而不是針對實現編程。3、多用組合,少用繼承。

三、示例

/// <summary> /// 鴨子類 /// </summary> public abstract class Duck { PRotected IFlyBehavior flyBehavior; protected IQuackBehavior quackBehavior; public Duck() { }

public abstract void Display(); public void PerformFly() { flyBehavior.Fly(); }

public void PerformQuack() { quackBehavior.Quck(); }

public void setFlyBehavior(IFlyBehavior fb) { flyBehavior = fb; }

public void setQuckBehavior(IQuackBehavior qb) { quackBehavior = qb; }

public void Swim() { Console.WriteLine("鴨子全都會游泳!"); } }

/// <summary> /// 飛行行為 /// </summary> public interface IFlyBehavior { void Fly(); }

public class FlyNoWay:IFlyBehavior { public void Fly() { Console.WriteLine("不會飛!"); } }

public class FlyWithWings :IFlyBehavior { public void Fly() { Console.WriteLine("飛飛飛!"); } }

public class FlyRocketPower:IFlyBehavior { public void Fly() { Console.WriteLine("火箭加速飛!"); } }

/// <summary> /// 綠頭鴨 /// </summary> public class MallardDuck:Duck { public MallardDuck() { flyBehavior = new FlyWithWings(); quackBehavior = new Quack(); } public override void Display() { Console.WriteLine("我是一只綠頭鴨!"); } }

/// <summary> /// 模型鴨 /// </summary> public class ModelDuck:Duck { public ModelDuck() { flyBehavior = new FlyNoWay(); quackBehavior = new MuteQuack(); } public override void Display() { Console.WriteLine("我是一個模型鴨"); } } static void Main(string[] args) { Duck muteQuack = new MallardDuck();

muteQuack.PerformFly();

Duck model = new ModelDuck(); model.PerformFly(); model.setFlyBehavior(new FlyRocketPower()); model.PerformFly(); Console.ReadLine(); }

源碼下載

轉載請注明來自:閃閃的幸運星

原文地址:http://m.survivalescaperooms.com/dongyang

如若轉載,請保留原文地址。謝謝合作。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜宾县| 灵璧县| 虹口区| 霍林郭勒市| 元阳县| 新沂市| 新安县| 孝感市| 保德县| 天柱县| 塘沽区| 余干县| 独山县| 金沙县| SHOW| 东乌| 天台县| 广昌县| 神池县| 印江| 东源县| 临湘市| 泉州市| 岚皋县| 新宁县| 宜宾县| 聂拉木县| 北宁市| 象山县| 乐业县| 自贡市| 双峰县| 南漳县| 汉川市| 沙河市| 柘城县| 秀山| 任丘市| 石阡县| 沐川县| 平凉市|