设计模式概论
2021-08-09 21:31:22 大约 3 分钟
设计模式是一套可以被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且提高代码的可靠性。
# 扮演的角色
- 帮助我们组织模块:通过一些设计模式,组织模块间的组成结构。
- 帮助我们设计沟通:有的设计模式可以帮助我们设计模块间如何沟通。
- 提高代码质量:通过设计模式,让代码更加优雅。
# 设计原则
- 开闭原则:就是说对扩展开放对修改关闭,比如:我们的程序在使用的时候要留出可以扩展的功能,但是在具体使用的使用不能让别人修改我们的源码,例:vue插件就是一些开闭原则的体现,vue留出接口通过插件来扩展vue的功能;
- 单一职责原则:就是说我们的一个功能模块只做一件事情;
- 依赖倒置原则:我们的上层模块不要依赖于下层模块,而是依赖与抽象;
- 接口隔离原则:就是说我们的接口应该细化,功能应该单一;
- 迪米特法则:迪米特法则(Law of Demeter)又叫作最少知识原则(The Least Knowledge Principle),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。
- 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。
# 分类:
我们的设计模式可以分为4大类:
- 创建型:帮助我们优雅的创建对象;
- 工厂模式:大量创建对象;
- 单例模式:全局只能有我一个;
- 建造者模式:精细化组合对象;
- 原型模式:javascript的灵魂;
- 结构型:帮助我们优雅的设计代码结构;
- 外观模式:给你的一个套餐;
- 享元模式:共享来减少数量;
- 适配器模式:用适配代替更改;
- 桥接模式:独立出来,然后再对接过去;
- 装饰者模式:更优雅的扩展需求;
- 行为型:模块之间行为的模块总结,帮助我们组织模块行为;
- 观察者模式:我作为第三方转发;
- 职责链模式:像生产线一样组织模块;
- 状态模式:用状态代替判断;
- 命令模式:用命令去解耦;
- 策略模式:算法工厂;
- 迭代器模式:告别for循环;
- 技巧型:帮助我们优化代码的技巧;
- 链模式:链式调用;
- 惰性模式:我要搞机器学习;
- 委托模式:让别人代替你收快递;
- 等待着模式:等你们都回来再吃饭;
- 数据访问模式:一个方便的数据管理器;