策略模式通过定义统一策略接口并由具体策略类实现,使上下文可在运行时动态切换算法,避免条件分支,提升扩展性与可维护性。
策略模式在C++中通过定义一组可互换的算法类,让它们实现统一接口,再由上下文(Context)在运行时动态选择具体策略。核心是“面向接口编程”,避免大量条件分支,提升扩展性和可维护性。
使用纯虚函数声明算法行为,所有具体策略都继承并实现它:
// Strategy.h
class PaymentStrategy {
public:
virtual ~PaymentStrategy() = default;
virtual void pay(double amount) const = 0;
};
每个策略封装一种独立的支付逻辑,彼此解耦:
// AlipayStrategy.h
class AlipayStrategy : public PaymentStrategy {
public:
void pay(double amount) const override {
std::cout
}
};
// WechatPayStrategy.h
class WechatPayStrategy : public PaymentStrategy {
public:
void pay(double amount) const override {
std::cout
}
};
Context不关心具体实现,只依赖Strategy接口;支持运行时切换策略:
// Order.h
class Order {
private:
const PaymentStrategy* strategy_;
public:
Order(const PaymentStrategy* s) : strategy_(s) {}
void setStrategy(const PaymentStrategy* s) { strategy_ = s; }
void checkout(double total) const {
if (strategy_) strategy_->pay(total);
else std::cout
}
};
策略对象可栈上创建、智能指针管理或工厂生成,灵活组合:
// main.cpp
int main() {
AlipayStrategy alipay;
WechatPayStrategy wechat;
Order order(&alipay);
order.checkout(199.9); // 输出:支付宝支付 199.9 元
order.setStrategy(&wechat);
order.checkout(299.0); // 输出:微信支付 299 元
return 0;
}
策略模式让算法变化独立于使用它的逻辑,新增支付方式只需加一个类+一行注册,无需修改Order或其他已有代码。配合std::unique_ptr或策略工厂,还能进一步支持延迟创建和配置驱动。
# c++
# 封装
# const
# double
# void
# 继承
# 虚函数
# 纯虚函数
# 接口
# public
# default
# 算法
# 多个
# 还能
# 已有
# 只需
# 可在
# 或其他
# 并由
# 支付宝
# 支付方式
# 再由
相关文章:
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何在VPS电脑上快速搭建网站?
视频网站制作教程,怎么样制作优酷网的小视频?
临沂网站制作公司有哪些,临沂第四中学官网?
高端建站如何打造兼具美学与转化的品牌官网?
建站上市公司网站建设方案与SEO优化服务定制指南
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
建站之星多图banner生成与模板自定义指南
建站之星后台密码遗忘?如何快速找回?
如何在腾讯云免费申请建站?
如何通过西部建站助手安装IIS服务器?
香港网站服务器数量如何影响SEO优化效果?
西安专业网站制作公司有哪些,陕西省建行官方网站?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
红河网站制作公司,红河事业单位身份证如何上传?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
江苏网站制作公司有哪些,江苏书法考级官方网站?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
招贴海报怎么做,什么是海报招贴?
如何用y主机助手快速搭建网站?
如何在云主机快速搭建网站站点?
建站主机选虚拟主机还是云服务器更好?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何破解联通资金短缺导致的基站建设难题?
定制建站流程解析:需求评估与SEO优化功能开发指南
公司门户网站制作流程,华为官网怎么做?
建站主机选购指南:核心配置与性价比推荐解析
C++用Dijkstra(迪杰斯特拉)算法求最短路径
详解jQuery停止动画——stop()方法的使用
建站之星如何实现PC+手机+微信网站五合一建站?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
建站之星如何快速更换网站模板?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
网站制作新手教程,新手建设一个网站需要注意些什么?
广平建站公司哪家专业可靠?如何选择?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
头像制作网站在线制作软件,dw网页背景图像怎么设置?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
动图在线制作网站有哪些,滑动动图图集怎么做?
定制建站策划方案_专业建站与网站建设方案一站式指南
建站主机SSH密钥生成步骤及常见问题解答?
Android自定义控件实现温度旋转按钮效果
公司网站设计制作厂家,怎么创建自己的一个网站?
如何在新浪SAE免费搭建个人博客?
*请认真填写需求信息,我们会在24小时内与您取得联系。