c#设计模式==策略模式
来源:互联网 发布:linux清空文件内容 编辑:程序博客网 时间:2024/05/22 00:50
策略模式,看完策略模式最大的感受就是将所有的算法封装起来,让它们之间可以相互替换,这个模式让算法的变化不会影响到使用者。
我写的例子还是之前的那个简易计算器,策略模式可以和简单工厂模式结合,在客户端中只需认识一个concent类,将所有的算法对象创建以及算法的使用全部封装在一个类中,即concent,通过传入的操作符来创建不同的对象,然后用算法基类的对象访问不同子类的算法结果。
程序:
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 策略模式{ class Program { static void Main(string[] args) { double a, b; string opt; Console.WriteLine("请输入一个数:"); a = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("请输入运算符:"); opt = Console.ReadLine(); Console.WriteLine("请输入另一个数:"); b = Convert.ToDouble(Console.ReadLine()); Concent opter = new Concent(opt, a, b); Console.WriteLine("结果为:" + opter.getresult()); } } class Concent { Opter opter; public Concent(string opt, double a, double b) { switch (opt) { case "+": { opter = new ADDopter(); break; } case "-": { opter = new SUBopter(); break; } case "*": { opter = new MULopter(); break; } case "/": { opter = new DIVopter(); break; } } opter.NUM1 = a; opter.NUM2 = b; } public double getresult() { return opter.getresult(); } } abstract class Opter { private double num1, num2; public double NUM1 { get { return num1; } set { num1 = value; } } public double NUM2 { get { return num2; } set { num2 = value; } } public abstract double getresult(); } class ADDopter : Opter { public override double getresult() { return NUM1 + NUM2; } } class SUBopter : Opter { public override double getresult() { return NUM1 - NUM2; } } class MULopter : Opter { public override double getresult() { return NUM1 * NUM2; } } class DIVopter : Opter { public override double getresult() { if (NUM2 == 0) { Console.WriteLine("除数不能为0"); return 0.0; } else { return NUM1 / NUM2; } } }}
0 0
- c#设计模式==策略模式
- c# 设计模式:策略模式
- c#设计模式-策略模式
- C# 设计模式之 策略模式 示例
- C#设计模式——策略模式
- 【C#设计模式-策略者模式】
- C#设计模式—策略模式
- c#设计模式之策略模式
- C#设计模式之策略模式
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- iOS中property属性的关键字(史上最详解)
- 【蓝牙】蓝牙品牌使用指南
- 如何使用hbuilder快速生成一个直接打开网站的app
- 03.draggable 可被拖动插件 ,droppable 可容纳拖动插件 与resizable 可调整大小插件
- 数据挖掘--Outlines
- c#设计模式==策略模式
- EditText总结
- linux下 使用makefile
- 比特币源码学习笔记(三)
- HDU-5510 Bazinga
- HihoCoder
- discuz论坛搭建
- 软件架构之架构视图
- ViewPager总结