首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS常用设计模式解析02-策略模式

    在于都本文之前,希望大家能够先阅读以下JS进阶系列03-JS面向对象的三大特征之多态这篇文章,了解JS的多态。在这篇文章,我们举了一个例子,就是选拔官员选拔合唱团成员时,他并不需要提前知道所有的成员在唱歌时具体会发出什么声音。他关注的只是,他发出命令“唱”时,合唱团成员就会开始唱歌。至于每个成员具体唱什么,交给他们自己好了。 这其实就是一个典型的策略模式,当我们在定义一个方法时,如果涉及到了太多的条件分支时,就应该思考一下,这些分支有没有必要定义在这个方法中。更准确地说,这个方法是不是需要提前知道所有的规则,这些规则是不是固定不会改变的。如果答案是否,那么你可以考虑将这些具体的规则剥离出来,交给传入的参数去实现,方法主体只需要关注你不变的目的即可。 策略模式的定义是:定义一系列的算法,把他们一个个封装起来,并且使他们可以互相替换。不过实际业务中,策略模式并不只是封装算法,如果一系列业务规则指向目标一致,并且可以被互相替换使用,我们都可以用策略模式来封装它们。下面我们举几个策略模式的使用场景,让大家详细体会一下。

    03

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择。这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。如果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重。

    02

    为什么我不再推荐枚举策略模式?

    ◆一、为什么讲策略模式 策略模式,应该是工作中比较常用的设计模式,调用方自己选择用哪一种策略完成对数据的操作,也就是“一个类的行为或其算法可以在运行时更改” 我个人的理解是 将一些除了过程不同其他都一样的函数封装成策略,然后调用方自己去选择想让数据执行什么过程策略。常见的例子为根据用户分类推荐不同的排行榜(用户关注点不一样,推荐榜单就不一样) 和单例模式一样,随着时间发展,我不再推荐经典策略模式,更推荐简单策略用枚举策略模式,复杂地用工厂策略模式。下面引入一个例子,我们的需求是:对一份股票数据列表,给出低价

    03
    领券