23种设计模式C++源码与UML实现--策略模式
生活随笔
收集整理的这篇文章主要介绍了
23种设计模式C++源码与UML实现--策略模式
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
策略模式
Strategy模式也叫策略模式,是行为模式之一,它对一系列的算法加以封装,为所有算法定义一个抽象算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交给客户端决定。strategy模式主要用来平滑地处理算法切换。
策略模式实现的关键就是将算法的逻辑抽象接口封装到一个类中,在通过委托的方式将具体的算法实现委托给具体的Strategy类来实现
Strategy
策略(算法)抽象
ConcreteStrategy
各种策略(算法)的具体实现
Context
策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。
适用于:准备一组算法,并将每一个算法都封装起来,使得它们可以互换。
策略模式优缺点
它的优点有:
恰当使用继承可以把公共的代码移到父类里面,从而避免重复的代码。
策略模式,那么使用算法或行为的环境类就可能会有一些子类,每一个子类提供一个不同
的算法或行为。但是,这样一来算法或行为的使用者就和算法或行为本身混在一起。决定
使用哪一种算法或采取哪一种行为的逻辑就和算法或行为的逻辑混合在一起,从而不可能
再独立演化。继承使得动态改变算法或行为变得不可能。
种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重转移
语句里面,比使用继承的办法还要原始和落后。
策略模式的缺点有:
客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须
理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知
道所有的算法或行为的情况。
策略模式造成很多的策略类。有时候可以通过把依赖于环境的状态保存到客户端里面,
而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,可以使用
享元模式来减少对象的数量
总结
以上是生活随笔为你收集整理的23种设计模式C++源码与UML实现--策略模式的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【计算机网络】TCP报文段结构
- 下一篇: 23种设计模式C++源码与UML实现--