这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战
设计模式是一种软件编写的模式,类似模板的感觉,在不同的场景下可以套用不同的模板,减少弯路,直接吃历史遗留的经验包。
在经典的GOF23中,一共有23种设计模式,可以分为3大类分别是:
- 创建型模式
- 结构型模式
- 行为型模式
以及论外的一种模式:J2EE设计模式
这些设计模式无一例外都遵循以下原则:
- 接口隔离原则
-
- 不同抽象的接口分开定义会比合在一起定义更好,降低接口、类之间耦合程度
- 迪米特法则(最少知道法则)
-
- 每个抽象内应该尽可能抽象完整,避免需要与其他抽象共同合并才能完整表示某个抽象范围
- 依赖倒转原则
-
- 即,针对接口编程,而不是针对实现编程
- 合成复用原则
-
- 尽可能使用合成、聚合的方式,而不是继承
- 里氏替换原则(LSP)
-
- 任何基类出现的地方,一定可以使用子类替代。也即派生类是基类完全替换的同时,派生类实现了自己的一些功能
- 开闭原则
-
- 开,即对扩展开放
- 闭,即在扩展时,不允许对旧代码进行修改
- 对于代码实现一个热插拔的功能,易于维护和升级
- 对于代码而言,需要使用接口以及抽象类
从描述上来看这几个原则实际上是由先后顺序的
在抽象的设计上来说,需要遵守:迪米特法则、接口隔离原则
在进行抽象实现的时候,需要遵守:合成复用原则、依赖倒转原则
在使用实现进行程序构建的时候,需要遵守:里氏替换原则、开闭原则
总而言之就是:合理的抽象,自下而上地多组合、少继承,写可插拔、扩展性好的代码