开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。
任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
真对接口编程,依赖于抽象而不依赖于具体。(尽可量多用接口,少用继承)
使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。(函数功能颗粒度最小,便于后续更改)
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。(模块之间耦合度最低,这样更改模块功能时,不需要修改相对应的模块 , 例如:mvc )
原则是尽量使用合成/聚合的方式,而不是使用继承。(就像一只手表,不是做成大块的,而是小元件,这样这个元件可以被其它功能使用)