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

与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中融汇了各种模式,可以说处处有招,也可以说处处无招。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值