前端设计模式应用 | 青训营

93 阅读5分钟

设计模式

设计模式可以分为三大类:结构型模式、创建型模式和行为型模式。

  • 结构型模式用于简化系统的设计
  • 创建型模式用于对象的创建
  • 行为型模式用于识别对象之间的交互模式。

image.png 以下是前端开发人员需要了解的10种设计模式:

  1. 工厂模式:通过一个工厂对象决定创建出哪种产品类的实例。
  2. 单例模式:确保一个类只有一个实例,并提供一个全局访问点。
  3. 原型模式:通过复制现有对象的原型创建新的对象。
  4. 装饰器模式:为对象动态添加新的功能,不改变其原有的结构和功能。
  5. 适配器模式:将一个类的接口转换成客户希望的另一个接口。
  6. 代理模式:为一个对象提供一个代用品或占位符,以控制对它的访问。
  7. 策略模式:封装不同的策略,并使得它们可以相互替换使用。
  8. 观察者模式:定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象。
  9. 迭代器模式:提供一致的遍历容器的方式,无需了解容器的内部结构。
  10. 状态模式:将对象的行为封装成不同的状态,每个状态都有不同的逻辑,并可以相互切换。

总结

设计式是软件开发中常见问题的通用解决方案。它包括创建型模式、结构型模式和行为型模式等。

创建型模式主要用于对象的创建,如工厂模式、单例模式和原型模式。结构型模式主要用于简化系统设计,如适配器模式、装饰器模式和代理模式。行为型模式主要用于识别对象之间的交互模式,如策略模式、观察者模式和迭代器模式。
设计模式有助于提高代码的可读性、复用性和可扩展性,是对前人经验和最佳实践的总结。在前端开发中,了解常用的设计模式,并选择合适的模式来解决问题,可以提高开发效率,使代码更加可维护和可扩展。

前端设计模式应用

在前端开发中,设计模式可以有以下应用:

  1.  MVC模式:将应用程序分成Model、View和Controller三个部分,使得代码逻辑更清晰,功能更模块化。Model负责处理数据逻辑,View负责展示界面,Controller负责处理用户交互和控制逻辑。
  2.   观察者模式:用于处理事件和消息的发布订阅机制。页面中的组件可以作为观察者订阅特定的事件,当事件触发时,被观察的对象会通知所有的观察者进行相应的操作。
  3.    单例模式:用于确保一个类只有一个实例被创建。在前端开发中,常常会使用单例模式来创建全局的对象,如全局状态管理工具、路由管理器等。
  4.    装饰器模式:为对象动态添加新的功能。在前端开发中,常常会使用装饰器模式来扩展组件的功能,如添加日志记录、权限控制等。
  5.    策略模式:将不同的策略封装起来,并使其可以互相替换。在前端开发中,常常会使用策略模式来处理不同的用户操作或者功能需求。
  6.    适配器模式:将一个对象的接口转换成另一个对象期望的接口,以方便其使用。在前端开发中,适配器模式可以帮助我们统一不同数据源的接口,使得数据处理更加方便。

设计模式是前人经验和最佳实践的总结,在前端开发中的应用可以帮助我们更好地组织代码、提高代码的可维护性和可扩展性。但是,使用设计模式时需要根据具体的场景进行选择和权衡,避免过度设计和滥用,以保持代码的简洁和可读性。

案例

单例模式

单例模式是一种创建型设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。

  • 使用场景:单例模式适用于一些对象我们只需要一个实例的情况,例如全局缓存、线程池、数据库连接池等。
  • 实现方法:通常使用一个变量来标识是否已经创建过实例,如果是,则直接返回之前创建的实例,如果不是,则创建一个新的实例并保存起来。

优点:

  1. 确保只有一个实例存在,避免了重复创建实例的开销。
  2. 提供一个全局访问点,方便对该实例进行访问和操作。

例子:

 class Singleton 
 { 
   co  nstructor() 
   { 
       if (!Singleton.instance) 
       { 
          Singleton.instance = this; 
       } 
       return Singleton.instance;
   } 
   doSomething() 
   { 
      console.log('Doing something...'); 
   } 
  } 
  // 创建实例 
  const instance1 = new Singleton();    
  instance1.doSomething(); 
  // 尝试创建第二个实例,但是返回的仍然是第一个实例 
  const instance2 = new Singleton(); 
  console.log(instance1 === instance2); 
  // true

在上述例子中,通过构造函数中的判断条件,确保只有一个实例被创建,并且通过全局访问点来访问该实例。 总结:单例模式是一种常用的设计模式,可以帮助我们在需要确保只有一个实例存在的情况下进行开发,提供了全局访问点来方便地对该实例进行访问和操作。