1.对扩展开放,对修改关闭
2.在面向对象设计中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。
里氏替代原则1.子类可以在任何地方替换他的父类,而程序的行为没有变化。
2.通俗的来讲就是子类可以扩展父类的功能,但不能改变父类原有的功能(子类可以有自己特有的方法,但是尽量不要去重写父类方法),不然代码出问题的几率大大增加。
依赖倒置原则依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在Java中,抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
依赖倒置原则的核心思想是面向接口编程
单一职责原则一个类有多个职责,那我们就要将这些职责互相分离,降低各职责间的耦合性。
接口分离原则尽量使用职能单一的接口,而不使用职能复杂、全面的接口。
原则:高内聚低耦合
内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。
耦合是指一个软件结构内不同模块之间互联程度的度量。
总结如果不遵守开闭原则,那么每次系统要拓展新的功能的话,去修改抽象层会存在修改错误的风险,这都会导致正常运行的功能失效,这样很可能会展开可怕的蝴蝶效应,使维护工作剧增。说到底,开闭原则除了表面上的可扩展性强以外,在企业中更看重的是维护成本。所以开闭原则是设计模式的第一大原则,它的潜台词是:控制需求变动风险,缩小维护成本。