第五步:降低程序依赖度
1. 依赖反转原则
在面向对象编程的时候引入了接口的概念,引入接口的目的是希望我们在编写程序的时候能保证足够的内聚,即它的业务逻辑不要为更底层的具体实现所耦合,这就是依赖反转原则。
a. 高层次的模块不应该依赖与低层次的模块,两者都应该依赖于抽象接口
b. 抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口
2. 工厂模式:
工厂模式核心就是工厂类,它在系统中必须保证单例,即整个系统只有一个实例。
3. 适配器模式:
通过转换,将两个不兼容的接口接在一起。它首先让系统程序去调适配器接口,而不是调外部系统接口,然后让适配器的实现类去调外部接口。核心就是它的那个接口与实现类。
4. 桥接模式:
最核心的思想就是将原有的因两个变化而形成的继承改写为组合,将原有的强关联变成了弱关联,进而实现了两个变化的相互解耦,解决“继承泛滥”的问题。
5. 策略模式:
为程序的某个方法定义一系列执行策略,对每一个执行策略进行封装,而由运行中的对象自己去选择需要采用哪个或哪些执行策略。策略模式不可能独立存在,一定伴随着工厂模式,即所有策略都是在工厂中创建后传递给客户程序的。
第六步: 我们开始分层了
随着系统重构的逐步深化,应当开始考虑从宏观上、站在系统架构的角度来重构系统,此时我们要考虑的一个重要内容就是分层。可以说,分层结构不合理的问题往往是导致维护过程中软件质量不断下降的罪魁祸首。
1. 什么是我们需要的分层?
一般来说,一个大型WEB系统都应当分为这样的几个层次:前端界面、MVC层、BUS层、DAO层,以及更底层的基础平台层。
a. 前端界面,就是那些HTML或JSP、ASP网页,也包含其中的大量CSS样式、JS程序、AJAX框架。
b. MVC层,又称为Web层或表示层,它是后台应用对前端数据进行接受和处理,以及向前端返回结果的层级。
c. BUS层,业务逻辑层,是整个系统的核心,是我们的系统真正要编写程序的地方。
d. DAO层,又称为持久层,对数据库进行一系列操作。
2. 什么是合理的分层结构?
合理的分层结构就是,什么层级的需求变更就去修改什么层级的代码,与其他层无关。
3. 怎样才能使软件更加易于修改,以应对频繁的需求变更?
最根本、最有用的办法还是正确地架构我们的系统,使我们的业务真正地从技术中脱离出来。
4. 适时重构可以大幅度提升软件的可维护性与易变性,提升软件系统的代码质量,但它必须有个前提条件,那就是业务代码与技术实现的解耦。
5. 尽早地发布时技术重构能够取得成功的重要保证。
6. 对系统分层的调整总是一个从无序到有序的过程。