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