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

一.以简单的运算为例:

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.开发时从计算开始写以策略结束代码执行从策略开始有点逆向思维。

原文地址:https://www.cnblogs.com/gbbwzz/p/8267004.html