设计模式概论

2021-08-09 21:31:22 设计模式 大约 3 分钟

设计模式是一套可以被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且提高代码的可靠性。

# 扮演的角色

  • 帮助我们组织模块:通过一些设计模式,组织模块间的组成结构。
  • 帮助我们设计沟通:有的设计模式可以帮助我们设计模块间如何沟通。
  • 提高代码质量:通过设计模式,让代码更加优雅。

# 设计原则

  1. 开闭原则:就是说对扩展开放对修改关闭,比如:我们的程序在使用的时候要留出可以扩展的功能,但是在具体使用的使用不能让别人修改我们的源码,例:vue插件就是一些开闭原则的体现,vue留出接口通过插件来扩展vue的功能;
  2. 单一职责原则:就是说我们的一个功能模块只做一件事情;
  3. 依赖倒置原则:我们的上层模块不要依赖于下层模块,而是依赖与抽象;
  4. 接口隔离原则:就是说我们的接口应该细化,功能应该单一;
  5. 迪米特法则:迪米特法则(Law of Demeter)又叫作最少知识原则(The Least Knowledge Principle),一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。
  6. 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。

# 分类:

我们的设计模式可以分为4大类:

  • 创建型:帮助我们优雅的创建对象;
    • 工厂模式:大量创建对象;
    • 单例模式:全局只能有我一个;
    • 建造者模式:精细化组合对象;
    • 原型模式:javascript的灵魂;
  • 结构型:帮助我们优雅的设计代码结构;
    • 外观模式:给你的一个套餐;
    • 享元模式:共享来减少数量;
    • 适配器模式:用适配代替更改;
    • 桥接模式:独立出来,然后再对接过去;
    • 装饰者模式:更优雅的扩展需求;
  • 行为型:模块之间行为的模块总结,帮助我们组织模块行为;
    • 观察者模式:我作为第三方转发;
    • 职责链模式:像生产线一样组织模块;
    • 状态模式:用状态代替判断;
    • 命令模式:用命令去解耦;
    • 策略模式:算法工厂;
    • 迭代器模式:告别for循环;
  • 技巧型:帮助我们优化代码的技巧;
    • 链模式:链式调用;
    • 惰性模式:我要搞机器学习;
    • 委托模式:让别人代替你收快递;
    • 等待着模式:等你们都回来再吃饭;
    • 数据访问模式:一个方便的数据管理器;
上次编辑于: 2023年7月4日 09:36