大家好,我是砸锅。一个摸鱼八年的后端开发。熟悉 Go、Lua。今天和大家一起学习架构😊
策略模式是一种行为设计模式,它可以允许我们定义一组算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化,不会影响到使用算法的客户。 策略模式包含如下主要角色:
- 策略(Strategy)角色:定义所有的算法接口,通常由抽象类或接口实现。
- 具体策略(Concrete Strategy)角色:实现了抽象策略定义的接口,提供具体的算法或行为。
- 上下文(Context)角色:持有一个策略类的引用,最终给客户调用。 策略模式的主要优点:
- 实现了算法的复用。通过定义算法族和提取共性,可以实现算法的复用。
- 易于扩展。可以通过新增具体策略类来扩展新的算法,而无需修改原有系统,符合“开闭原则”。
- 便于控制算法的使用。可以通过配置选择不同的算法实现,避免使用硬编码。
- 降低系统的耦合度。策略类与上下文类之间是松耦合的,仅通过接口实现交互,使得算法的变化不会影响到使用它的客户类。 策略模式也有一定的缺点:
- 可能出现许多的具体策略类。当要支持许多算法时,可能出现大量的具体策略类,增加了系统的复杂度。
- 客户必须了解所有的策略算法,以选择正确的算法策略。这意味着客户必须清楚系统中包含的全部算法以及其区别。 策略模式在实际应用中用得比较广泛,比如Spring Boot中的自动配置、业务流程处理引擎等都是策略模式的典型应用。总体来说,当系统需要动态地在几个算法中选择一种时,策略模式是一个不错的选择。它可以使系统在不修改原有结构的基础上支持新的算法,提高系统的灵活性与扩展性。 掌握策略模式的概念,并在实际开发中灵活运用,可以让我们的代码更加清晰与可维护。尽管策略模式会增加一定的复杂性,但是其带来的好处可以弥补这一代价。所以,熟练使用策略模式是一个优秀程序员应具备的基本技能,值得每一位开发者深入研究与总结。
此文章为4月Day21学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看