最近刚刚开始看《设计模式》,刚好最近也在从头开始OpenCV2,里面有讲到在图像算法设计中采用策略模式,照着例子实现了这个小demo,一下子明白所谓的策略模式倒底是个什么东东,这里mark一下。
策略模式(Strategy),用原书中的定义是:定义一系列的算法,把他们一个个的封装起来,并且是他们可以相互替换(相互替换这点还没有完全体会到)。这样算法的变换便可以独立于使用它的对象。用我直白的话说就是,把对一个对象(Context)进行处理的各种算法,封装到另外一个对象(Strategy)里面,这样我们便可以专注于Strategy,而不用担心修改算法的同时会对Context造成影响,只要这个Strategy还没有对Context起作用,我们对Strategy的改动都不会影响到Context,在实现的过程中省了好多心。
下面是一个小demo:
具体到这个demo中Strategy的实现是将对Mat(图片)处理的函数统统封装到一个类中,这里讲类中成员函数的声明和实现写在了一起。