【设计模式】策略模式

定义

属于行为型模式。它定义了算法家族,分别封装起来,让它们之前可以互相替换,此模式让算法的变化不会影响到使用算法的客户。我们创建表示各种策略的对象和一个行为随着策略改变而改变的context对象的执行算法。当一个系统里的许多类的不同只有它们的行为,策略模式可以让一个对象在许多行为中选择一个

结构

1.context类

该类使用了某种策略,即接收一个策略对象

2.抽象策略类

提取了所有策略的公共方法

3.具体策略类

提供具体的策略方法

例子

context类

在这里插入图片描述

context类创建时需要传入一个策略对象,并且调用该策略对象中的具体策略取得结果

抽象策略类

!在这里插入图片描述

抽象策略提取出公共方法

具体策略类

在这里插入图片描述

实现具体的策略

客户端

在这里插入图片描述

客户端模拟现在是加法的情况下策略模式的运作

结果

在这里插入图片描述

优点

1.算法可自由切换
2.避免使用多重判断
3.扩展性好
4.简化了单元测试,因为每个算法都有单独的类,可以通过自己的接口单独测试

缺点

1.策略类会增多
2.策略类都要暴露

策略与简单工厂结合

将实例化具体策略的过程由客户端转移到context类中
在这里插入图片描述

客户端

在这里插入图片描述

简单工厂模式需要让客户端认识两个类(父类和工厂类),而策略模式和简单工厂结合只要认识一个context类即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
策略模式是一种设计模式,它在JavaScript中有着广泛的应用。策略模式的主要思想是将不同的算法封装成不同的策略类,并让这些策略类能够互相替换,以实现不同的行为。在JavaScript中,策略类就是一组函数,它们可以根据不同的情况来执行不同的算法。 策略模式在JavaScript中有很多实际运用,其中两个主要的应用场景是实现动画效果和表单验证。通过使用策略模式,我们可以轻松地切换不同的动画效果,同时可以根据不同的验证规则来验证表单数据的有效性。 在实际的开发过程中,策略模式的应用可能会受到需求的限制,因此在一些情况下这类需求较少。然而,理解策略模式的实现原理是非常重要的,包括封装、委托、多态等概念在策略模式中的应用。这些概念是策略模式的核心。 总结来说,策略模式是一种在JavaScript中广泛应用的设计模式,它通过将算法封装成不同的策略类,实现了行为的灵活替换。在实际应用中,策略模式可以用于实现动画效果和表单验证等功能。理解策略模式的核心概念对于深入理解JavaScript中的设计模式是非常重要的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [05 【JavaScript设计模式策略模式](https://blog.csdn.net/qq_35117024/article/details/106396011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [js设计模式策略模式](https://blog.csdn.net/SK_study/article/details/122404194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值