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

原创 2015年11月21日 19:11:54

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


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


<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.


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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

大话设计模式 第1章 代码无错就是优? 简单工厂模式

大话设计模式   第1章 代码无错就是优? ——简单工厂模式 所有代码C++实现 1.1问题描述: 请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入...

大话设计模式1 简单工厂模式 的java代码实现

首先是Operation抽象类: package yx.designpattern.simpleFactory; abstract class Operation { public double...

1.简单工厂—我的大话设计模式

小金作为KingWorld的国家领导,经常需要到不同的国家进行访问,而每个国家的语言都是不一样的,所以到不同的国家总是要带不同的翻译。以前小金总是亲力亲为,自己去挑选某个国家的美女翻译,然后带走。(目...

ios大话设计模式-简单工厂

ios大话设计模式-简单工厂标签(空格分隔): ios进阶1.什么是简单工厂 SimpleFactory根据提供给它的数据,返回一个类的实例。通常它返回的类都有一个公共的父类(或者接口对象) 2...

大话设计模式——简单工厂

第一章——简单工厂设计模式 这一章的例题是一个计算器。 首先将运算抽象出来建立一个虚类或者接口 package com.icss.calculater; public abstract cla...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)