设计模式的目的绝对不只是为了让我们把所有的模式都背熟,然后在我们的工程中进行应用。设计模式的最终目的应该是让我们在对软件设计有更高层面的认知,给软件开发人员一定的理论指导。而这些已有的模式是为了让软件设计人员可以快速方便的学习比较成熟的设计方案,更好的在实践中对设计模式的核心的理论进行理解。所以,开头的理论部分虽然只占了整本设计模式书的一小部分,但确实整本书的核心所在。

软件的和维护性和可复用性:

可维护性:1.可扩展性-可以比较容易的在现有系统的基础上加入新的功能

               2.灵活性-在对现有的功能进行修改时,成本比较小,危险性也比较小

               3.可插入性-对功能进行替换的时候,成本小,危险性也小

可复用性:对代码进行复用,提高开发的效率,降低开发的成本。恰当的可复用性可以改善可维护性。

可维护性和可复用性的关系:复用性常常会破坏可维护性。比如A,B同时依赖C,如果A需要修改C的功能,但是这时B会有问题,这就降低了灵活性。可维护性和复用性是有共同特性的俩个独立特性,有部分的交集。所以,一个重要的概念就是支持可维护的复用。也就是尽量去走到可维护性和复用性的交集的地方去。

可复用性:传统的可复用性是指算法的复用,数据结构的复用等。在java这样的面向对象的语言中,数据的抽象,继承,封装,多态为系统提供了更高层次的可复用性。数据的抽象和继承使得更高层次的概念和定义可以复用;多态是的具体的实现可以复用;而抽象和封装可以保持和促进系统的可维护性。这样的话,复用已经不再聚焦于实现的细节上,而是聚焦在了更高层次的定义和抽象上。抽象层次一般是一个应用做战略性判断和决定的地方,那么抽象层就应该是稳定的,应该是复用的焦点。如果抽象层和具体的实现层想独立的话,抽象层的复用会更容易。

可维护性复用是设计模式想要达到的目标。

系统的可扩展性是有开闭原则,里式替换原则,依赖倒转原则和组合/聚合原则保证的

系统的灵活性是由开闭原则,迪米特法则,接口隔离原则锁保证的

系统的可插入行是有开闭原则,里式替换原则,组合/聚合复用原则以及依赖倒转原则来保证的。

设计原则为达到可维护性复用提供了指导原则。