Strategy模式(策略模式 行为型)

来源:互联网 发布:读书思考 知乎 编辑:程序博客网 时间:2024/04/28 00:36

与Template模式相类似,策略模式要解决的也是算法框架(接口)与具体算法实现的解耦。Template使用的是继承的方式,而Strategy模式使用的是组合(委托)的方式。

以下为Strategy模式的UML类图


Strategy基类:声明了接口,其接口具体实现就交由其子类去实现。Context类

Context类: Context需要用到那个Strategy类的子类,就用它的成员strategy指针去指向该Strategy子类,然后在doAction()中去调用Strategy的operation()函数。Strategy模式通过这个类,以通过“组合”方式实现算法(实现)的异构。

//main函数的实现{   Strategy* stg = new StrategyA();   Context* context = new Context(stg);   Context->Action();   delete stg;   delete context;}

很多设计模式看起来很相像,但由于解决的问题不一样,方向不一样,所以就有了区别。我知道一句话:当你真正能理解设计模式,就已经在code中融汇了各种模式,可以说处处有招,也可以说处处无招。


0 0
原创粉丝点击