六大设计原则
开闭原则
- 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
- 软件实体包括
- 项目或软件产品中按照一定得逻辑规则划分的模块
- 抽象和类
- 方法
依赖倒置
- 定义:High level modules should not depend upon low level modules.Both should depend upon
abstractions.Abstractions should not depend upon details.Details should depend upon abstractions. - 三层含义
- 高层模块不应该依赖底层模块,两者都应该依赖其抽象
- 抽象不应该依赖细节
- 细节应该依赖抽象
单一职责
- 定义:应该有且仅有一个原因引起类的变更
里氏替换原则(LSP原则)
- 定义:如果对每一个类型S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没
有发生变化,那么类型S是类型T的子类型 - 注意:如果子类不能完整地实现父类的方法, 或者父类的某些方法在子类中已经发
生“畸变”, 则建议断开父子继承关系, 采用依赖、 聚集、 组合等关系代替继承。
接口隔离原则
接口分为两种:
- 实例接口,在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的描述,这是一种接口。
- 类接口,Java中经常使用interface关键字定义的接口
隔离的定义: - 客户端不应该依赖它不需要的接口
- 类间的依赖关系应该建立在最小的接口上
通俗而言,就是接口尽量细化,同时接口中的方法尽量减少。
迪米特法则–最少知识原则
一个对象应该对其他对象有最少的了解。该法则的核心观念就是类间解耦,弱耦合,类的复用率才可以提高。