Unity3D 设计模式---策略模式
2017-09-12 21:04
246 查看
1.策略模式的定义
对策略模式的理解需要一些多态基础,将不同的算法分装起来,根据调用者的身份返回对应的算法算出的结果,让它们之前可以互相替换,此模式让算法的变化独立于使用算法的客户,将对象模型(Model)与对象的一些经常变动的行为(Behaviour)进行分离,将原有的“Is-A”(是一个类)模式改为“Has-A”(类包含类)模式。
2.策略模式的原理
其中会计代表算法 p 和 c 代表两个不同的对象 都调用这个算法 得到不同的结果
3.举例说明
4.优点
相对于普通的面向对象设计(Object - Oriented),大大提高代码的可重用性
可以在程序运行时,改变对象模型的行为。
通过将一系列算法分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。所有的算法都完成的是相同的工作,只是不同算法的实现方式不同,此模式可以让算法实用类以相同的方式调用不同的算法,降低了算法和算法实用类之间的耦合。
对策略模式的理解需要一些多态基础,将不同的算法分装起来,根据调用者的身份返回对应的算法算出的结果,让它们之前可以互相替换,此模式让算法的变化独立于使用算法的客户,将对象模型(Model)与对象的一些经常变动的行为(Behaviour)进行分离,将原有的“Is-A”(是一个类)模式改为“Has-A”(类包含类)模式。
2.策略模式的原理
其中会计代表算法 p 和 c 代表两个不同的对象 都调用这个算法 得到不同的结果
3.举例说明
public class Context { Strategy strategy; public Context(Strategy strategy) //初始化时传入策略 { this.strategy = strategy; } public void ContextInterface() //策略使用接口 { strategy.AlgorithmInterface(); } } //算法基类 public abstract class Strategy { public abstract void AlgorithmInterface(); } //吃肉算法 public class ConcreteStrategyC : Strategy { public override void AlgorithmInterface() { Console.WriteLine("吃肉"); } } //吃馒头算法 public class ConcreteStrategyB : Strategy { public override void AlgorithmInterface() { Console.WriteLine("吃馒头"); } } //吃米饭算法 public class ConcreteStrategyA : Strategy { public override void AlgorithmInterface() { Console.WriteLine("吃米饭"); } } //客户端 class Program { static void Main(string[] args) { Console.WriteLine("饿了..."); Console.WriteLine("喜欢吃什么?"); string likeFood = Console.ReadLine().Trim(); Context context = null; switch(likeFood) { case "rice": context = new Context(new ConcreteStrategyA()); break; case "bun": context = new Context(new ConcreteStrategyB()); break; case "meat": context = new Context(new ConcreteStrategyC()); break; } if (null != context) context.ContextInterface(); } }
4.优点
相对于普通的面向对象设计(Object - Oriented),大大提高代码的可重用性
可以在程序运行时,改变对象模型的行为。
通过将一系列算法分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。所有的算法都完成的是相同的工作,只是不同算法的实现方式不同,此模式可以让算法实用类以相同的方式调用不同的算法,降低了算法和算法实用类之间的耦合。
相关文章推荐
- 【Unity3D与23种设计模式】策略模式(Strategy)
- 面向对象设计模式之策略模式
- C# 设计模式之 策略模式 示例
- 设计模式之策略模式
- 《Head First 设计模式》学习笔记——策略模型
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- c#设计模式-策略模式
- java设计模式(五)--策略模式
- Android设计模式(六)-策略模式
- MOOC清华《面向对象程序设计》第7章:负载监视器的设计v2.0(采用基于模板的策略模式)
- 设计模式(二):策略模式
- Head First 设计模式 Part I(策略模式,观察者模式,装饰器模式).md
- 《Head First 设计模式》之策略模式
- 设计模式之策略模式
- JAVA设计模式-策略模式
- 【设计模式】设计模式C++编程实现之策略模式(Strategy Pattern)
- java设计模式之——策略模式
- C++设计模式之策略模式(Strategy Pattern)
- c# 设计模式:策略模式
- 设计模式之Strategy(策略模式)