Unity3D 设计模式---策略模式
来源:互联网 发布:淘宝怎么提升排名靠前 编辑:程序博客网 时间:2024/06/06 02:31
1.策略模式的定义
对策略模式的理解需要一些多态基础,将不同的算法分装起来,根据调用者的身份返回对应的算法算出的结果,让它们之前可以互相替换,此模式让算法的变化独立于使用算法的客户,将对象模型(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),大大提高代码的可重用性
可以在程序运行时,改变对象模型的行为。
通过将一系列算法分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。所有的算法都完成的是相同的工作,只是不同算法的实现方式不同,此模式可以让算法实用类以相同的方式调用不同的算法,降低了算法和算法实用类之间的耦合。
阅读全文
1 0
- Unity3D 设计模式---策略模式
- Unity3d策略模式
- Unity3d之策略模式
- Unity3d之策略模式
- Unity3d之策略模式
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- 设计模式-----策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- 设计模式- 策略模式
- leetcode改进 Reverse Pairs
- struts2框架搭建开发环境
- 2017 ACM/ICPC Asia Regional Shenyang Online 1001(hdu 6194)
- PAT练习(4)-1044 Table Tennis (30)
- [LeetCode]169.Majority Element
- Unity3D 设计模式---策略模式
- 轮播图Banner使用
- HDU 5534 Partial Tree 【完全背包+思维】
- 基于Scikit-Learn的五个文本分类案例研究
- 51NOD 1158 全是1的最大子矩阵
- [初学笔记] matlab中怎么把数据循环写入Excel
- linux IO多路复用机制(select、poll、epoll)及5种IO模型
- caioj1065 DP
- 国内外十大搜索引擎