开放封闭原则:是说软件实体(类、模块、函数等等)应该可以扩展,但不可以修改(对于扩展时是开放的对于更改是关闭的)
无论模块是多么的封闭都会存在一些无法对之封闭的变化。既然不可以完全封闭,设计人员必须对设计的模块应该对哪种变化封闭做出选择。他必须先猜出最有可能发生变化种类,然后构造抽象来隔离那些变化。
开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是个好主意。拒绝不成熟地抽象和抽象本身一样重要。
依赖倒转原则: A.高层模块不应该依赖低层模块。两个都应该依赖抽象
B.抽象不应该依赖细节。细节应该依赖抽象。
在面向过程开发时,为了使得常用代码可以复用,一般都会把这些常用代码写成许许多多函数的程序库,这样我们在做新项目时,去调用这些低层的函数就可以了。比如我们做项目大多访问数据库,所以我们就把访问数据库的代码写成了函数,每次做新项目时就去调用这些函数。这也就叫做高层模块依赖低层模块。