这篇“web策略模式结构是怎样的”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“web策略模式结构是怎样的”文章吧。
意图
为一系列算法定义共通的接口,使它们可以相互替换。
动机
假设我们有个数据处理软件,当它取得数据之后需要进行某些处理。这些处理可以简单,例如限幅,求绝对值等,也可能比较复杂,如移动平均,计算差分等。一般来讲,如果将这些处理单独考虑的时候难度不会太大。但是有一点比较麻烦的是,根据数据和需求的不同,可能需要不同形式的处理。更加麻烦的是,具体的输入数据的类型,需求需要等到软件执行时才可以确定,也就是说需要动态替换这些处理。
为了解决这个问题我们可以定义共通的接口来抽象这些处理。对于上面的例子来说,定义一个y=f(x)应该就可以满足要求。对于任意一个输出,只要产生适当的输出即可。对于移动平均等处理来说,可能会稍微麻烦一些,但也无非就是内部再准备一个缓冲区以管理过去一段时间的数据就可以解决问题。
结构
当某些处理可以抽象出相同的接口,只是内部具体的行为有所不同时,可以使用策略模式从而实现动态变更处理内容的目的。
策略类Strategy定义用于共通的处理接口。Context使用这个接口来调用相应的处理。这里的处理可以是对数据的加工,也可以只是执行某个动作。
具象策略类ConcreteStrategy负责具体实现策略类定义的接口。只要保证接口的一致性,具象策略类可以自由地扩展新功能。为了达成目的,具象策略类经常需要保持某些必要的信息。这一点也是将策略封装成类之后一个便利之处。
上下文类Context类首先需要管理一个策略类对象的参照。根据用户的指定或者其他方式,这个参照可指向任意一个具体具象策略类ConcreteStrategy。但数据处理流程执行时,上下文类还负责为策略对象提供输入数据和取出输出数据。决定策略的上下文,管理和使用策略的上下文不一定是同一个对象。
以上就是关于“web策略模式结构是怎样的”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。