最近在学《大话设计模式》,这本书确实不错,语言很通俗易懂,特别适用于我们初学者。看了这本书之后才发现原来我在编写软件的时候存在很多的不规范,回想起去年参加信息安全竞赛时,我们编写的软件因为导师的一个小小的不满意,我们只好牺牲几个晚上的休息时间,没办法把软件几乎重新写了一遍。更让人头疼的是,刚把这个问题解决了,导师又提出新的问题。那个过程可真是要命啊!而且离提交软件作品的时间也快近了,整个暑假我们浪费了很多时间在这些无用功上面。现在读到这本书,才让我从本质上认识到了这个问题,那就是:当初最早我们在设计软件时还是用计算机的逻辑思维设计,根本没有考虑到封装、继承、多态、重构等。所以每次都因为更改一个小的地方都要把整个软件几乎重写一次,这样的工作量可想而知,而且更让人感到悲哀的是,这些代码根本不能重用,也就只能用在这个软件上面,以后也面临着维护的问题。
好了,说了那么多。现在讲讲我学到的第一个模式——简单工厂模式,供像我一样的初学者们分享。
借助简单工厂模式的思想,我自己写了一个Windows桌面程序的计算器:
首先定义一个抽象类:
class Operation { // 字段,参加运算的两个数 private double numberA; private double numberB; // private double result; // 属性 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; } }
然后其他的具有运算类可以继承该类,并且通过重写GetResult()方法来实现具体的运算操作。以加法类为例:
class operationAdd:Operation { public override double GetResult() { double result = 0 ; result = NumberA + NumberB; return result; } }
最后在定义一个类工厂(OperationFactory)来实现实例化:
class OperationFactory { public static Operation CreatOperation( string op) { Operation operation = null ; switch (op) { case " + " : operation = new operationAdd(); break ; case " - " : operation = new operationSub(); break ; case " * " : operation = new operationMult(); break ; case " / " : operation = new operationDiv(); break ; } return operation; } }
好了计算器的基本类已经定义好了,也许你现在还看不出这样写代码有什么好处,但是等你用你以前的那种计算机逻辑思维来写的话也可以实现。这样通过类封住和继承的好处是计算器便于扩展,而且等有了新的算法可以继续写一个继承Operation的类就行了,
下面给出下载:/Files/LoveHong/DTest.zip
转载于:https://www.cnblogs.com/LoveHong/archive/2009/04/16/1437348.html
相关资源:JAVA上百实例源码以及开源项目