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

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


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


<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">//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;
        }
}</span></span></span>


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


<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">//加减乘除类
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;
    }
}


</span></span></span>


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


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


<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">//简单运算工厂类
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;  
     }
}</span></span></span>


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


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


<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-size:18px;">//客户端代码
Operation oper;
oper=OperationFactory.createOperate("+");
oper.NumberA=1;
oper.NumberB=2;
double result=oper.GetResult();</span></span></span>


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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值