博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
策略模式
阅读量:4048 次
发布时间:2019-05-25

本文共 1138 字,大约阅读时间需要 3 分钟。

官方定义:

策略模式是一种定义一些列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类别与使用算法类之间的耦合。

自己理解:

用来避免设计的类中同时包含众多的实现,并且实现算法之间用开关型语句(例如:if else if, switch case 等)进行多级判断所导致的代码改写复用困难等问题。

UML图:

在这里插入图片描述
代码示例:

// Step1: 定义抽象策略类class Strategy {
public: virtual void AlgorithmInterface() = 0; virtual ~Strategy() {
}};//Step2: 定义具体策略类class ConcreatStrategyA :public Strategy {
public: void AlgorithmInterface() {
//具体代码实现 }};class ConcreatStrategyB :public Strategy {
public: void AlgorithmInterface() {
//具体代码实现 }};class ConcreatStrategyC :public Strategy {
public: void AlgorithmInterface() {
//具体代码实现 }};//Step3:定义上下文class Context {
private: Strategy* strategy;public: Context(Strategy* s) :strategy(s) {
} void ContextInterface() {
// 功能代码 strategy->AlgorithmInterface(); //功能代码 } ~Context() {
delete strategy; }};//Step4: 定义客户端代码int main() {
Context* context = new Context(new ConcreatStrategyA); context->ContextInterface(); Context* context = new Context(new ConcreatStrategyB); context->ContextInterface(); Context* context = new Context(new ConcreatStrategyC); context->ContextInterface();};

转载地址:http://jtyci.baihongyu.com/

你可能感兴趣的文章
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>