我与大话设计模式之代码篇(一)-----简单工厂

    随着学习的慢慢深入,我终究又回到了敲代码的路程上,踏上了这个挺让人上瘾的归程。不过我还是不希望一直敲代码的,重要的是理解知识,享受过程。


    大话中第一个例子是关于计算机控制台程序的,先开始读到这里不知道计算机控制台程序是什么东东,它是不是就是计算机呢?于是带着疑问查阅了百度,百度上对控制台这样解释:控制台是存放管理工具的框架,是由控制台的项定义的,包括控制台文件夹和其它容器,网页和其它管理项,控制台带有窗口,这些窗口能提供控制台树视图和由控制台树中项引发的管理属性、服务及事件的视图。哦,原来控制台是用来控制的平台,所有管理东西都集中在它这里,所以计算机控制台就是一个用来控制计算的平台。理解了这个定义是用来干嘛的,所以例子就跟着敲吧。


//Operation运算类
public class Operation
{
	private double _numberA=0;
        private double _numberB=0;
        public double NumberA
        {
             get {return _numberA;}
             set {-numberA=value;}
        }
        public double NumberB
        {
             get {return _numberB;}
             set {_numberB=value;}
        }
        public virtual double GetResult()
        {
             double result=0;
             return result;
        }
}


    上述代码是一个运算接口,将计算谁就将谁写进运算类,然后通过具体的运算方法得到结果。接着看:


//加减乘除类
class OPerationAdd:Operation
{
    public override double GetResult()
    {
         double result=0;
         result=NumberA+NumberB;
         return result;
    }
}
class OPerationSub:Operation
{
    public override double GetResult()
    {
         double result=0;
         result=NumberA-NumberB;
         return result;
    }
}
class OPerationMul:Operation
{
    public override double GetResult()
    {
         double result=0;
         result=NumberA*NumberB;
         return result;
    }
}
class OPerationDiv:Operation
{
    public override double GetResult()
    {
         double result=0;
         if(NumberB=0)
             throw new Exception("除数不能为0.")
         result=NumberA/NumberB;
         return result;
    }
}



    此处代码就是具体的计算方法,就是做的步骤和过程,最后结果调到第一块代码处。


    看第一章讲的简单工厂模式:


//简单运算工厂类
public class OperationFactory
{
    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;
          } 
          return oper;  
     }
}


    此处代码我理解的就是将运算类中定义的各种方法在这里重新生产,用过后重新再用,和垃圾回收似的,简单工厂是用来根据类Class来创建实例对象。是一个生产车间。


    客户端代码主要用来给对象赋值,然后根据步骤进行计算。


//客户端代码
Operation oper;
oper=OperationFactory.createOperate("+");
oper.NumberA=1;
oper.NumberB=2;
double result=oper.GetResult();


    此处客户端代码说是第一个数是1,第二个数是2,然后运算“+”,计算结果展示为3.


    这是我整体上对简单工厂模式的理解,肯定有很多不足,希望阅读者提出,我加以改正和提高。

你可能感兴趣的:(【设计模式学习】)