首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

[设计方式]学习设计模式之一(简单工厂模式)

2012-12-23 
[设计模式]学习设计模式之一(简单工厂模式)简单工厂是我接触的第一种设计模式,在刚开始学习编程时,老师要

[设计模式]学习设计模式之一(简单工厂模式)

简单工厂是我接触的第一种设计模式,在刚开始学习编程时,老师要求写一个计算器软件。于是,用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 那么,只需要更改这个计算类就可以。

热点排行