软件自产生之后,功能从一开始的简单慢慢演变到复杂,参与到其中的开发人员也越来越多
其根本原因,就是需求的改变,在以前,对软件的需求很简单,通常只是固定的一两个功能,开发完成后基本不用维护
随着时间的发展,人们对软件的需求越来越复杂,变化越来越快
最终产生了各种难以维护的代码,稍微一个改动就会影响到很多现有的功能,需要分析整个程序的逻辑才能去做处理
于是编程软件迫切需要一种能够解决扩展难,维护难的办法,这个需求是自然而然产生的
为了解决这个需求,于是有了各种编程思想,结构化编程,面向对象编程
在面向对象思想中,高内聚,低耦合的概念经常被提及,原因就是解耦跟聚合能够构建易于维护,扩展的程序
为了达到这个目标,设计原则出现了,设计原则是面向对象编程中为了解决维护和扩展问题而总结出的一套指导思想
通常我们讲设计原则,都是针对面向对象编程设计原则,不适用于其他编程思想
设计模式的产生与设计原则的产生有所不同,设计模式并不是针对面向对象编程思想的
设计模式是我们软件开发实践中解决类似问题,使用同样解决问题的方案
而形成的模式
简单的一个例子,以前汇编中经常使用分支这种模式解决问题,于是产生了if模式,if解决了goto难以阅读的问题
在GOF的设计模式一书中,实际上是针对面向对象静态语言的设计模式,其中很多设计模式不适用于动态语言
所以有些人觉得Java这种有缺陷的语言才需要设计模式,但只要是解决问题使用相同方法,那么就形成了模式
设计模式是由实践诞生的,所以并不一定完全符合设计原则,如果说设计原则是内功,那么设计模式就是武功招式
使用设计模式,可以轻易的编写出动态扩展,易于维护的程序
总的来说,设计原则和设计模式,都是为了解决软件开发难的需求,而需求,是软件的根源