c语言sscanf函数的用法是什么
231
2022-09-19
Aha!设计模式(103)-策略模式(2)
效果
一般来讲,大部分程序的处理也可以看作是数据处理,而数据处理的过程又可以分为输入数据、处理数据和输出数据的过程。策略模式着重解决的就是处理数据的选择和扩展问题。
处理数据的方式的变化首先可以是处理方式的选择。这种情况下通常会有几种已知的方式可供选择。以贷款利息计算为例,一般有等额本息和等额本金两种方式,具体选哪种由合同双方约定。类似这样的选择处理在代码中通常是一个选择语句。程序用于的选择决定进入哪个分支。每次增加计算方法的时候,都需要修改判断语句以增加另外的选项。即使除此之外的所有代码和这种变更毫无关联也是如此。
当需要扩展功能的时候还有一个可选的方式。还是前面的例子,我们可以将处理过程分解,将处理数据的部分从事前准备,事后处理中分离出来,独立成一个抽象的方法。这样每次需要增加新的处理方式时,只要派生出一个新类并实现抽象方法就可以了。这种情况下派生类和基类之间是[is a]关系。这种方式的问题就是派生类的内容虽然可能只包含数据处理的内容,但是这部分内容是作为基类处理的一部分存在,没有办法运用到其它场合。另外一点就是如果数据处理类还需要其他方面的扩展,派生类的数量就会大量增加。
第三种方式就是使用策略模式,第一步仍然是将处理过程分解,将真正的数据处理从事前准备、事后处理中分离出来。接下来的做法略有不同,策略模式是将数据处理部分独立成一个策略类。当需要选择或者扩展数据处理方式时,只要替换策略类就可以了。这种情况下整个数据处理类和策略类之间是[has a]关系。它的好处在于策略部分独立于整个数据处理类而存在,方便替换、扩展的同时还可以不加任何修改地运用到其它场合。
觉得本文有帮助?请分享给更多人。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~