由于嫉妒群里的朋友写了个计算器,我特地利用了刚学的简单工厂模式“coffee”了一个,感觉横爽!!面向对象设计模式的出现就是为了拯救我杂乱的代码,看着自己以前写的“天书”,就有种冲动的感觉!!!
计算器的模式很简单,适合新手“练手”。首先应当写Operation(运算符)类,把两个私有字段(操作数A和B)“打成”属性,虚拟出运算方法就行了。把计算器最主要的Operation基类封装好,就可以无限的继承他了,只要重构Operation类的计算方法就可以。我的计算器继承了小学三年级的所有四则运算的功能!而且还特别赠送了开方和n次方的功能!!不过由于我不知道那个MR、MC……是什么东东,所以就小小的忽略了!!!听着就“狠”简单,当然写起也很简单!
- //Operation基类::(Visual Studio 2008与SharpDevelop3.1小提示:点击字段,鼠标右键,选择自动生成属性)
- blic class Operation
- {
- private double _numberA = 0;
- public double NumberA
- {
- get { return _numberA; }
- set { _numberA = value; }
- }
- private double _numberB = 0;
- public double NumberB
- {
- get { return _numberB; }
- set { _numberB = value; }
- }
- public virtual double GetResult()
- {
- double result = 0;
- return result;
- }
- }
小学三年级四则运算派生类(加法),继承自Operation,只需重构GetResult方法就可以了:
- class Add : Operation
- {
- public override double GetResult()
- {
- double result = 0;
- result = NumberA + NumberB;
- return result;
- }
- }
简单工厂模式类,像工厂一样的流水线操作,把接收的operator(运算符)参数分配给对应的Operation子类:
- public class Factory
- {
- public static Operation createOperate( string operate )
- {
- Operation oper = null;
- switch ( operate )
- {
- case "+":
- oper = new Add();
- break;
- case "-":
- oper = new Sub();
- break;
- case "*":
- oper = new Mul();
- break;
- case "/":
- oper = new Div();
- break;
- case "sqrt":
- oper = new MySqrt();
- break;
- case "pow":
- oper = new MyPow();
- break;
- }
- return oper;
- }
看了上面的代码,感觉学面向对象设计模式大大地有用啊!!!
接下来Show哈我的“另类”计算器了:
程序启动后慢慢显现:
是不是很酷啊!!由于C#的double类型能够承受的数据很吓人,反正小学三年级的四则运算No problem completely!!!
如果你一不小心点了 、、、这几个键的话,就有可能会出现下图,并伴随着动听的Music,当然更可能会出现“它们来了,我们是它们的奴隶!”:
有朋友可能会问了,啷个没看到那个红叉叉也,其实我把它换成了。信不信由你~~~
源代码我已经传到网盘上了: