当前23种的设计模式都是基于这五大原则,即单一原则,接口隔离原则,开放-封闭原则,替换原则,依赖倒置原则。
在面向对象中,为了使业务代码具有较低的耦合性,方便后期维护和优化,使用这基于五大原则的设计模式,设计模式最先是使用在建筑学,而不是计算机独有。
单一职责(SRP)
例如生产车辆,如果一个工人需要从装配到测试每个人都需要参与,那么学习和工作的成本会很高,而且如果某个环节修改,那么整个工厂的人都需要进行学习,那么另外一个方法是每个人都只负责一辆车的生产中的一小环节,这样,每个人的学习成本和工作效率会大大提高,而且如果后面哪个环节更新了,只需要对更新的环节工人进行学习就好,不影响其他环节工人
- 上面的例子即阐释了单一职责的概念和作用。降低每个类或者每个方法之间的耦合性,降低后期维护成本,提高开发效率等。
- 单一职责含义:避免相同的职责分散到不同的类中, 另一个是避免一个类承担太多的职责
接口隔离(ISP)
接口隔离主要观点如下:
- 一个类对另外一个类的依赖性应当是建立在最小的接口上的
- 客户端程序不应该依赖它不需要的接口方法
- 基于单一职责细化接口,即客户需要什么接口,承接什么接口,不应该多个客户需求臃肿到一个接口.
设计模式中大多都会重叠,有时会区分不出到底属于哪个模式
开放-封闭
开放:模块的行为必须是开放的,支持扩展的,不僵化的
封闭:在对模块的功能进行扩展时,不应该影响或大规模地影响已有的程序模块。
替换原则
子类必须能够替换成它们的基类
依赖倒置
- 上层模块不应该依赖于下层模块,它们共同依赖一个抽象
- 抽象不能依赖于具体,具体应该要依赖于抽象。