设计模式-行为性设计模式:策略模式 Strategy
来源:互联网 发布:unknown网络 编辑:程序博客网 时间:2024/06/10 04:46
策略模式 就是把业务逻辑和算法分开
好处:可以额外添加一些处理,屏蔽客户端对算法的依赖
缺点:上端必须知道所有的算法,并负责选择算法
构成:一个策略环境 一个抽象策略和一大堆子策略
下面模拟一个简单计算器的代码
抽象策略代码
public abstract class BaseCalculation { public int leftInput; public int rightInput; public abstract int Calculation(); }
一大堆子策略 就是加减乘除的算法
public class jia:BaseCalculation { public override int Calculation() { return leftInput + rightInput; } }
public class jian:BaseCalculation { public override int Calculation() { return leftInput - rightInput; } }
public class cheng:BaseCalculation { public override int Calculation() { return leftInput * rightInput; } }
public class chu:BaseCalculation { public override int Calculation() { return leftInput / rightInput; } }
策略环境代码
public class Context { private BaseCalculation _Calculation = null; public Context(BaseCalculation calculation) { _Calculation = calculation; } public int Calculation(int leftinput,int rightinput) { _Calculation.leftInput = leftinput; _Calculation.rightInput = rightinput; return _Calculation.Calculation(); } }
//模拟用户输入两个数字和一个运算符 int ileft = 1; int iright = 2; string Operator = "+"; //模拟计算器 int Operationresult; switch (Operator) { case "+": { BaseCalculation b = new jia(); Context con = new Context(b); Operationresult = con.Calculation(ileft, iright); } break; case "-": { BaseCalculation b = new jian(); Context con = new Context(b); Operationresult = con.Calculation(ileft, iright); } break; case "*": { BaseCalculation b = new cheng(); Context con = new Context(b); Operationresult = con.Calculation(ileft, iright); } break; case "/": { BaseCalculation b = new chu(); Context con = new Context(b); Operationresult = con.Calculation(ileft, iright); } break; default: Operationresult = 0; //抛异常 就不写了 break; } Console.WriteLine("{0}{1}{2}={3}", ileft, Operator, iright, Operationresult);
结果
0 0
- 设计模式-行为性设计模式:策略模式 Strategy
- [设计模式-行为型]策略模式(Strategy)
- 行为设计模式---策略模式(Strategy)
- 【设计模式】行为模式之Strategy策略
- 设计模式--行为型-Strategy(策略)
- 设计模式08-策略模式Strategy(对象行为模式)
- 设计模式深入学习--Strategy 策略模式(行为型模式)
- 设计模式----Strategy(策略)
- 设计模式--Strategy(策略)
- Strategy(策略)设计模式
- [设计模式]策略模式,strategy
- 设计模式--策略模式(Strategy)
- [设计模式]Strategy策略模式
- 设计模式 -- 策略模式Strategy
- [设计模式]-策略模式(Strategy)
- 设计模式--策略模式Strategy
- 设计模式: 策略(strategy)模式
- 设计模式 策略模式Strategy
- 第十六周 【项目1 - 验证算法】
- 数据结构与算法-查找-折半查找
- WebView+EventBus粘性Post实现界面跳转
- js对象中封装方法
- SVM入门(九)松弛变量(续)
- 设计模式-行为性设计模式:策略模式 Strategy
- 技能包!Linux 下清空或删除大文件内容的 5 种方法
- c++::实现一个日期类
- RN布局(登陆界面Demo)
- java synchronized详解
- 响应式设计之媒体查询
- SVM入门(十)将SVM用于多类分类
- 【TZCOO】教你做一个高逼格的演讲人
- js object ---》json