返回

战略篇 | 超越模式,一文窥览策略模式和发布订阅模式

前端

写在前面的话

大家好,我是架构探索者老张,久违了。我之前的系列文章给大家留下了很深刻的印象,大家还记得吧?下周的分享会就要到我了,提前准备好,但绞尽脑汁不知道讲点啥。简单的怕被嫌弃,难的又讲不懂。我熬夜刷掘金上的相关文档,翻阅了大量的同类文章,摘抄了很多同类文章的定义和术语。不知道你们有没有这样的感觉,当你看多了之后反而一头雾水。索性我来给你一一解读,保证你们轻松掌握!

策略模式

策略模式是一种行为设计模式,它定义了一组算法,并允许我们根据不同的情况使用不同的算法。这样可以使我们的代码更加灵活和可扩展。

策略模式的结构图如下:

[图片]

策略模式包含以下角色:

  • Context :这是一个包含算法集合的类。
  • Strategy :这是一个定义算法接口的类。
  • ConcreteStrategy :这是一个实现了算法接口的类。

策略模式的使用步骤如下:

  1. 创建一个Context对象。
  2. 将不同的ConcreteStrategy对象传递给Context对象。
  3. 调用Context对象的execute()方法来执行算法。

策略模式的优点如下:

  • 灵活:策略模式可以让我们根据不同的情况使用不同的算法,从而使我们的代码更加灵活。
  • 可扩展:策略模式可以让我们很容易地添加新的算法,从而使我们的代码更加可扩展。
  • 解耦:策略模式可以将算法从Context对象中分离出来,从而使我们的代码更加解耦。

策略模式的缺点如下:

  • 复杂性:策略模式可能会使我们的代码更加复杂,因为它需要我们创建多个类来表示不同的算法。
  • 性能:策略模式可能会使我们的代码性能下降,因为它需要在运行时选择不同的算法。

发布订阅模式

发布订阅模式是一种消息传递模式,它允许对象之间进行松散耦合的通信。对象可以订阅感兴趣的事件,并在事件发生时收到通知。

发布订阅模式的结构图如下:

[图片]

发布订阅模式包含以下角色:

  • Publisher :这是一个发布事件的对象。
  • Subscriber :这是一个订阅事件的对象。
  • Event :这是一个表示事件的对象。

发布订阅模式的使用步骤如下:

  1. 创建一个Publisher对象。
  2. 创建一个Subscriber对象。
  3. 将Subscriber对象订阅到Publisher对象的事件。
  4. 调用Publisher对象的publish()方法来发布事件。
  5. Subscriber对象将在事件发生时收到通知。

发布订阅模式的优点如下:

  • 松散耦合:发布订阅模式可以使对象之间进行松散耦合的通信,从而使我们的代码更加灵活和可扩展。
  • 可扩展:发布订阅模式可以让我们很容易地添加新的发布者和订阅者,从而使我们的代码更加可扩展。
  • 异步:发布订阅模式可以使事件的处理异步进行,从而提高我们的代码性能。

发布订阅模式的缺点如下:

  • 复杂性:发布订阅模式可能会使我们的代码更加复杂,因为它需要我们创建多个类来表示不同的事件和订阅者。
  • 性能:发布订阅模式可能会使我们的代码性能下降,因为它需要在运行时进行事件的发布和订阅。

策略模式和发布订阅模式在项目中的使用

策略模式和发布订阅模式都是非常有用的设计模式,它们可以帮助我们创建灵活、可扩展和可维护的代码。

在实际项目中,策略模式可以用于以下场景:

  • 当我们需要根据不同的情况使用不同的算法时。
  • 当我们需要在运行时选择不同的算法时。
  • 当我们需要将算法从其他对象中分离出来时。

发布订阅模式可以用于以下场景:

  • 当我们需要对象之间进行松散耦合的通信时。
  • 当我们需要在事件发生时通知多个对象时。
  • 当我们需要异步处理事件时。

总结

策略模式和发布订阅模式都是非常有用的设计模式,它们可以帮助我们创建灵活、可扩展和可维护的代码。在实际项目中,我们可以根据需要选择合适的模式来使用。

好了,今天的分享就到这里,感谢大家的支持,我们下周见!