strategy模式
这个模式和bridge模式很类似。我说的类似是具体实现上的类似,都是把算法组合为类的成员,但是背后考虑问题的思路确不同。所以看很多介绍书籍上举出的例子,你会觉得都可以来说明这2种模式,还是再强调,它们背后的思路完全不同。
具体而言,bridge模式中,把模块分为抽象部分和实现部分,这2部分都可能会发生变化,把他们抽象出来后,可以把M*N种变化变成M+N种变化。
而在strategy模式中,把模块分为内容部分和算法部分(我不想使用抽象部分和实现部分的说法,这样会搞不清传达出来的概念),在这里,强调了算法部分的变化,而对内容部分没有考虑其变化。
总之,这2种模式只是思考问题的思路存在差异,而具体的代码组织上将是雷同的。
这个模式和bridge模式很类似。我说的类似是具体实现上的类似,都是把算法组合为类的成员,但是背后考虑问题的思路确不同。所以看很多介绍书籍上举出的例子,你会觉得都可以来说明这2种模式,还是再强调,它们背后的思路完全不同。
具体而言,bridge模式中,把模块分为抽象部分和实现部分,这2部分都可能会发生变化,把他们抽象出来后,可以把M*N种变化变成M+N种变化。
而在strategy模式中,把模块分为内容部分和算法部分(我不想使用抽象部分和实现部分的说法,这样会搞不清传达出来的概念),在这里,强调了算法部分的变化,而对内容部分没有考虑其变化。
总之,这2种模式只是思考问题的思路存在差异,而具体的代码组织上将是雷同的。