现在的位置: 首页 > 综合 > 正文

简单工厂模式下的另类计算器(刚出炉的源代码)

2013年08月23日 ⁄ 综合 ⁄ 共 2282字 ⁄ 字号 评论关闭

          由于嫉妒群里的朋友写了个计算器,我特地利用了刚学的简单工厂模式“coffee”了一个,感觉横爽!!面向对象设计模式的出现就是为了拯救我杂乱的代码,看着自己以前写的“天书”,就有种冲动的感觉!!!

      计算器的模式很简单,适合新手“练手”。首先应当写Operation(运算符)类,把两个私有字段(操作数A和B)“打成”属性,虚拟出运算方法就行了。把计算器最主要的Operation基类封装好,就可以无限的继承他了,只要重构Operation类的计算方法就可以。我的计算器继承了小学三年级的所有四则运算的功能!而且还特别赠送了开方和n次方的功能!!不过由于我不知道那个MR、MC……是什么东东,所以就小小的忽略了!!!听着就“狠”简单,当然写起也很简单!

Code:
  1. //Operation基类::(Visual Studio 2008与SharpDevelop3.1小提示:点击字段,鼠标右键,选择自动生成属性)  
  2.   
  3. blic class Operation  
  4.       {  
  5.           private double _numberA = 0;  
  6.           public double NumberA  
  7.           {  
  8.               get { return _numberA; }  
  9.               set { _numberA = value; }  
  10.           }  
  11.   
  12.           private double _numberB = 0;  
  13.           public double NumberB  
  14.           {  
  15.               get { return _numberB; }  
  16.               set { _numberB = value; }  
  17.           }  
  18.           public virtual double GetResult()  
  19.           {  
  20.               double result = 0;  
  21.               return result;  
  22.           }  
  23.       }  

 

小学三年级四则运算派生类(加法),继承自Operation,只需重构GetResult方法就可以了:

Code:
  1. class Add : Operation  
  2. {  
  3.       public override double GetResult()  
  4.       {  
  5.              double result = 0;  
  6.              result = NumberA + NumberB;  
  7.              return result;  
  8.       }  
  9. }  


简单工厂模式类,像工厂一样的流水线操作,把接收的operator(运算符)参数分配给对应的Operation子类:

Code:
  1. public class Factory  
  2. {  
  3.     public static Operation createOperate( string operate )  
  4.     {  
  5.         Operation oper = null;  
  6.         switch ( operate )  
  7.         {  
  8.             case "+":  
  9.                 oper = new Add();  
  10.                 break;  
  11.             case "-":  
  12.                 oper = new Sub();  
  13.                 break;  
  14.             case "*":  
  15.                 oper = new Mul();  
  16.                 break;  
  17.             case "/":  
  18.                 oper = new Div();  
  19.                 break;  
  20.             case "sqrt":  
  21.                 oper = new MySqrt();  
  22.                 break;  
  23.             case "pow":  
  24.                 oper = new MyPow();  
  25.                 break;  
  26.         }  
  27.         return oper;  
  28.     }  


看了上面的代码,感觉学面向对象设计模式大大地有用啊!!!

接下来Show哈我的“另类”计算器了:

程序启动后慢慢显现:

是不是很酷啊!!由于C#的double类型能够承受的数据很吓人,反正小学三年级的四则运算No problem completely!!!      

如果你一不小心点了  、这几个键的话,就有可能会出现下图,并伴随着动听的Music,当然更可能会出现“它们来了,我们是它们的奴隶!”:

有朋友可能会问了,啷个没看到那个红叉叉也,其实我把它换成了。信不信由你~~~

源代码我已经传到网盘上了:

www.rayfile.com/files/e266d9e8-8708-11de-9ac4-0014221f469f/

抱歉!评论已关闭.