C++ 策略模式(Strategy )

C++策略模式

概念:定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法变化,不会影响到使用算法的用户。

使用场景:用于屏蔽相同功能的不同版本算法接口差异,(比如人脸识别算法的封装),用户可以任意使用各种算法,无需修改代码中已经调用的接口

 

UML类图

代码:

#ifndef STRATEGY_HPP
#define STRATEGY_HPP
//filename:startegy.hpp
#include<iostream>
class Strategy
{
public:
	virtual void Func() = 0;
};
class ConcreteStrategy1:public Strategy
{
public:
	void Func() overide
	{
		std::cout<<"ConcreteStrategy1::Func"<<std::endl
	}
};
class ConcreteStrategy2:public Strategy
{
public:
	void Func() overide
	{
		std::cout<<"ConcreteStrategy2::Func"<<std::endl
	}
};
class StrategyContext
{
public:
    void SetStrategy(Strategy* ptr)
	{
		m_stragegy=ptr;
	}
	void ContextInterface()
	{
		if(m_stragegy)
		{
			m_stragegy->Func();
		}
	}
	
private:
	Strategy* m_stragegy=nullptr;
};
#endif
//example
//filename:main.cpp
#include<Strategy.hpp>
int main()
{
	StrategyContext context;
	context.SetStrategy(new ConcreteStrategy1);
	context->ContextInterface();
	return 0;
}
发布了21 篇原创文章 · 获赞 2 · 访问量 2876

猜你喜欢

转载自blog.csdn.net/ysf465639310/article/details/90696773