(Boolan)C++设计模式 <十二> ——命令模式(Command)和访问器(Visitor)

本文介绍了C++设计模式中的"行为变化"模式,重点讲解了命令模式Command和访问者模式Visitor。命令模式通过封装请求为对象实现请求者与执行者的解耦,支持撤销操作。访问者模式允许在不修改对象结构的情况下添加新的操作,遵循开闭原则,但也存在扩展新元素类时可能导致Visitor类改变的问题。
摘要由CSDN通过智能技术生成

“行为变化”模式

在组建的构建过程中,组建行为的变化经常导致组建本身剧烈的变化。“行为变化”模式将组建的行为和组建本身进行解耦,从而主持组件的变化,实现两者之间的松耦合。

  • 典型模式
    • Command
    • Visitor

命令模式Command

将一个请求(行为)封装为对象,从而使你可用不同的请求,对客户进行参数化;对请求排队或记录请求日志以及支持可撤销的操作。
——《设计模式》GoF

  • 动机
    在软件构建构成中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需要对行为进行“记录、撤销(undo)、事务”邓程澧,这种无法抵御变化的紧耦合是不合适的。
#include <iostream>
#include <vector>
#include <string>
using namespace std;


class Command
{
public:
    virtual void execute() = 0;
};

class ConcreteCommand1 : public Command
{
    string arg;
public:
    ConcreteCommand1(const string & a) : arg(a) {}
    void execute() override
    {
        cout<< "#1 process..."<<arg<<endl;
    }
};

class Conc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值