前言
设计模式自己也挺感兴趣,于是也在反复地思考,在学习的各个阶段也在不断地问其他小伙伴该如何去学习,但是每个人都有每个人的学习方法,总是感觉跟自己想要的差那么点儿,但是仍然感谢各位帮助我的小伙伴们。就在昨天,bill看到了我学习设计模式,于是乎,给我上了一堂大课,甚是欢喜呀!仿佛找到了自己想要的东西,但是理解仍然不深,一些收获跟大家分享!
简单工厂模式
纵观大话设计模式这本书:作者是以一条线的方式来写的。首先抛出一个问题,然后用一种我们常用的方法去总结,接着以事实去验证它的正确性,然后做的就是持续优化。于是小编就想到了软件工程的套路(需求分析、制定计划、设计、程序编码、测试、运行及维护)其实设计模式的写作风格就是运用了软件工程的套路,有木有?那么简单工厂模式作为一个不算设计模式的模式,又是如何进行的呢?
演化过程
why:小菜面试,老板让设计一个计算器
is what:简单工厂模式就是利用简单工厂去决定使用运算类里哪一种子类的方法
do what:根据外界给出的条件去实例化子类
how to do:
简单运算工厂类:
class OperationFactory:OperationLibrary
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
case "sqr":
oper = new OperationSqr();
break;
case "sqrt":
oper = new OperationSqrt();
break;
}
return oper;
}
}
客户端代码:
class Program:OperationLibrary
{
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.WriteLine(oper.NumberA+oper.NumberB );
Console.ReadKey();
}
}
另外还有各个运算类如:
class OperationAdd:OperationLibrary.Operation
{
public override double GetResult()
{
double result=0;
result=NumberA +NumberB;
return result ;
}
}