系统重构,就是在不改变软件的外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。
当需求变更了,我们现在的设计不能满足了,怎么办呢?通过安全而平稳的重构方法先重构我们的系统,使之可以应付那个需求,然后再添加代码,实现新需求。这个过程被称为“两顶帽子”:一顶是只重构而不新增功能, 一顶是增加新的功能实现新需求。正因为如此,我们在设计时思考当下就可以了。
【例】
代码如下:
1 public abstract class XmlBuildFactoryTemplate {
2 /**
3 * 初始化工厂。根据路径读取XML文件,将XML文件中的数据装载到工厂中
4 * @param path XML文件的路径
5 */
6 public void initFactory(String path){
7
8 // 寻找XML文件,读取数据流
9 InputStream inputStream = findXmlFile(path);
10
11 // 解析XML文件,返回根
12 Element root = readXmlStream(inputStream);
13
14 // 根据XML文件创建类,放入工厂中
15 buildFactory(root);
16 }
17
18 /**
19 * 读取一个XML的文件,输出其数据流
20 * @param path XML文件的路径
21 * @return InputStream文件输入流
22 */
23 protected InputStream findXmlFile(Stringpath) {
24 ...
25 }
26
27 /**
28 * 读取并解析一个XML的文件输入流,以Element的形式获取XML的根,返回之
29 * @param inputStream 文件输入流
30 * @return ElementXML的根
31 */
32 protected Element readXmlStream (InputStream inputStream) {
33 ...
34 }
35
36 /**
37 * 用从一个XML的文件中读取的数据构建工厂
38 * @param root 从一个XML的文件中读取的数据的根
39 */
40 protected abstract void buildFactory(Element root);
41
42 }
在面向对象的世界里,我们设计的类、方法、关联,应当与现实世界中的事物、行为,及其相互的关系对应起来。现实世界有什么事物,这些事物都应当有什么行为,相互之间是什么关系,则我们在软件世界里就应当设计什么类、什么方法和它们之间的关联关系。 只有这样的设计才是易于为人所理解的设计,这就是“领域驱动设计”(DDD: Domain-Driven Design)的思想。
重构方法分为以下几个层次:方法的重构、对象的重构、对象间的重构、继承体系间的重构、组织数据的重构与体系架构的重构。
【参考文献】
1、《大话重构》