策略模式是行为型模式,它是一种定义一系列算法的方法,所有的这些算法完成的都是相同的工作,只是实现不同。所以可以用相同的方式去调用所有的算法,降低了算法类与使用算法的类之间的耦合度。
代码:
#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;
}
本文深入探讨了策略模式这一行为型设计模式。策略模式允许在运行时选择算法,通过定义一系列算法并将每个算法封装起来,使它们可以互相替换。文章通过一个具体的代码示例,展示了如何使用策略模式来降低算法类与使用算法的类之间的耦合度。
689

被折叠的 条评论
为什么被折叠?



