[设计模式]学习设计模式之一(简单工厂模式)
简单工厂是我接触的第一种设计模式,在刚开始学习编程时,老师要求写一个计算器软件。于是,用textBox和button组合版的就出炉了!
除了一个form什么都没有,闲在想起来,那时候确实是想法简单。
那么就写个简单工厂的计算器吧!
写下面几个类
public abstract class Operate//计算抽象基类 { public double NumberA { get; set; } public double NumberB { get; set; } public abstract double CalResult(); } public class OperationAdd : Operate//加法 { public override double CalResult() { double result; result = NumberA + NumberB; return result; } } public class OperationSub : Operate//减法 { public override double CalResult() { double result; result = NumberA - NumberB; return result; } } public class OperationFactory//简单工厂 { public static Operate CreatOperate(string operate) { switch (operate) { case "+": return new OperationAdd(); case "-": return new OperationSub(); default: return null; } } }
调用代码如下
static void Main(string[] args) { Operate oper= OperationFactory.CreatOperate("+"); oper.NumberA = 10; oper.NumberB = 3; double result= oper.CalResult(); Console.WriteLine(result); Console.ReadLine(); }
这样,就实现了简单的业务和调用分离。面向抽象编程的思想就体现出来了!
如果需要加入其它的计算,如:乘法、除法等,只需要增加乘法除法的Operate的子类,再在工厂类中增加case 判断,就可以了。
使用设计模式,可以减少重复代码和维护成本。 比如,某一个计算方法出现了bug 那么,只需要更改这个计算类就可以。