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

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

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

03

CMCD 处理实时真实数据

CMCD(Common Media Client Data,通用媒体客户端数据)是连接用户播放器和内容分发的桥梁。CDN 每秒钟可以看见上百万个二进制信息的传递,在用户端,用户看见的是一个回放窗口里面存有最近几分钟的缓存数据可用于回放,我们想将这两种场景融合在一起,这是 CMCD 的关键点。CMCD 诞生于 Mile-High Video,我们在两年前的 Mile-High Video 会议上提议在用户请求中加入会话 ID,Dolby David 建议我们投入更多的精力将其变成一种标准。因此我们在会议结束后建立了一种原始的简单的标准,我们定义了一组结构化的键值对,将对双方都有益的媒体相关的信息从播放器传递到 CDN,通过以下三种形式:1)一组常规的头(A set of custom headers)。2)一个索引自变量(A query arg)。3)一个 JSON 对象。之所以称为常规是因为同样的数据结构可以被所有的播放器和所有的 CSDN 使用。

02
领券