什么是设计模式
设计模式是一种开发设计指导思想,每一种设计模式都是解决某一类问题的概念模型,所以在实际的使用过程中,不要拘泥于某种已经存在的固定代码格式,而要根据实际的业务场景做出改变。
正因为设计模式的这种特点,所以即使是同一种设计模式,在不同的场景中也有不同的代码实现方式。另外,即便是相同的场景,选择相同的设计模式,不同的研发人员也能给出不一样的实现方案。
所以,设计模式并不局限于最终的实现方案,而是在这种概念模型下,解决系统设计中的代码逻辑问题。
六大设计原则
单一职责原则
如果开发的一个功能不是一次性的,且随着业务的发展的不断变化而变化,那么当一个Class类负责超过两个及以上的职责时,就在需求的不断迭代、实现类持续扩张的情况下,就会出现难以维护、不好扩展、测试难度大和上线风险高等问题。
开闭原则
在面向对象编程领域中,开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的,但对于修改是封闭的。这意味着应该用抽象类定义结构,用具体实现扩展细节,一次确保软件系统开发和维护过程的可靠性。
开闭原则的核心思想也可以理解为面向抽象编程。
里式替换原则
如果S是T的子类,那么所所有T类型的对象对可以在不破坏程序的情况下被S类型的对象替换。
简单来说,子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:当子类集成父类时,除添加新的方法且完成新增的功能外,尽量不要重写父类的方法。也就是说:
- 子类可以实现父类的抽象方法,但不能覆盖父类非抽象方法,
- 子类可以增加自己特有的方法
- 当子类的方法重载父类的方法时,方法的前置条件要比父类的方法更宽松
- 当子类的方法实现父类的方法时,方法的后置条件要比父类的方法更严格或者与父类的方法相等
里式替换原则的作用:
- 里式替换原则是实现开闭原则的重要方式之一
- 解决了继承中重写父类造成的可复用性变差的问题
- 是动作正确性的保证,即类的扩展不会给已有系统引入新的错误,降低了代码出错的可能性
- 加强程序的健壮性,同时变更时可以做到非常好的兼容性,提高程序的维护性,可扩展性,降低需求变更时引入的风险
迪米特法则
迪米特法则又称最少知道原则,是指一个对象类对于其他对象来说,知道得越少越好。也就是说,两个类之间不要有过多的耦合关系,保持最少关联性。
接口隔离原则
一个类对另一个类的依赖应该建立在最小的接口上。在具体应用接口原则时,应该根据一下几个规则衡量:
- 接口尽量小,但是要有限度,一个接口只服务于一个子模块或者业务逻辑
- 为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法,
- 了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同,要深入了解业务逻辑。
- 提高高内聚,减少对外交互。让接口用最少的方法完成最多的事
依赖倒转原则
依赖倒转原则是指在设计代码架构时,高层模块不应该依赖底层模块,二者应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。