• 设计模式:简单工厂模式与策略模式


    一.以简单的运算为例:

    1.

    public class JiSuan
    {
    private decimal _a;

    public decimal A
    {
    get { return _a; }
    set { _a = value; }
    }
    private decimal _b;

    public decimal B
    {
    get { return _b; }
    set { _b = value; }
    }

    //封装字段

    public virtual decimal getResult()
    {
    decimal d = 0;
    return d;
    }
    }// 返回方法 可修改

    2.

    public class JiaFa : JiSuan   //继承jisuan
    {
    public override decimal getResult()
    {
    return A + B;                           //修改计算当中返回值的方法为加法
    }
    }

    3.

    public static JiSuan CreateClass(string o)    //创建计算工厂
    {
    JiSuan j = null;                                              //不能实例化的对象定义为空

    if (o == "+") j = new JiaFa();
    else if (o == "-") j = new JianFa();
    else if (o == "*") j = new ChengFa();

    return j;
    }                                                                  //通过输入或者选择来选去不同的方法

    4.

    public class CeLue    //策略开始
    {
    private JiSuan js;                  私有的计算对象
    public CeLue(string a, string b, string o)                 //3个参数
    {
    js = JiSuanFactory.CreateClass(o);         //选择方法
    js.A = Convert.ToDecimal(a);                  //取值
    js.B = Convert.ToDecimal(b);
    }

    public decimal Result()
    {
    return js.getResult();                   调用返回值方法
    }

    }

    5.

    static void Main(string[] args)
    {
    Console.Write("请输入第一个数:");
    string a = Console.ReadLine();
    Console.Write("请输入运算符:");
    string o = Console.ReadLine();
    Console.Write("请输入第二个数:");
    string b = Console.ReadLine();

    CeLue cl = new CeLue(a, b, o);
    Console.WriteLine(cl.Result());

    Console.ReadKey();
    }                    //输出

    总结:启动流程为1.输入  进入策略 策略通过计算工厂去选择运算方法运算发放去给计算赋值 返回输出  2.开发时从计算开始写以策略结束代码执行从策略开始有点逆向思维。

  • 相关阅读:
    IEnumerable<T>转DataTable的几种方法
    关于IAsyncResult接口的CompletedSynchronously属性
    为WCF增加UDP绑定(储备篇)
    WPF自定义集合控件概述与遇到的问题
    WPF嵌套模板引发的血案
    为WCF增加UDP绑定(实践篇)
    Uva 10557 XYZZY(DFS+BFS)
    Uva 572 Oil Deposits(DFS)
    Uva 532 Dungeon Master(三维迷宫)
    Uva 10004 Bicoloring
  • 原文地址:https://www.cnblogs.com/gbbwzz/p/8267004.html
Copyright © 2020-2023  润新知