策略模式是行为型模式,它是一种定义一系列算法的方法,所有的这些算法完成的都是相同的工作,只是实现不同。所以可以用相同的方式去调用所有的算法,降低了算法类与使用算法的类之间的耦合度。
代码:
#include <iostream>
using namespace std;
/*
策略模式
*/
//抽象算法
class ConnectDevice
{
public:
virtual void connect() = 0;
};
//tcp连接
class TcpConnect :public ConnectDevice
{
public:
virtual void connect()
{
cout << "Tcp连接" << endl;
}
};
//RS232连接
class RsConnect :public ConnectDevice
{
public:
virtual void connect()
{
cout << "rs232连接" << endl;
}
};
//串口连接
class UartConnect :public ConnectDevice
{
public:
virtual void connect()
{
cout << "串口连接" << endl;
}
};
//维护具体算法
class ContextConnect{
public:
void ContextConnectFun(ConnectDevice *con)
{
if (con)
{
con->connect();
}
}
};
//客户端
int main()
{
ContextConnect *context = new ContextConnect;
if (context)
{
//由实例化不同的策略,调用不同的算法
ConnectDevice *con = nullptr;
con = new TcpConnect();
context->ContextConnectFun(con);
con = new RsConnect();
context->ContextConnectFun(con);
con = new UartConnect();
context->ContextConnectFun(con);
delete context;
context = nullptr;
if (con)
{
delete con;
con = nullptr;
}
}
return 0;
}