设计模式——命令模式(command)

组件构建构成中,组件行为的变化经常导致组件本身剧烈的变化;“行为变化”将组件本身和组件行为解耦,从而支持组件行为变化。

command,visitor属于行为变化模式。

motivation:软件构件过程中,“行为请求者”和“行为执行者”常常呈现出紧耦合;在某些场合——例如记录、撤销/重做,事务等处理时,这种无法抵御变化的紧耦合时不适应软件发展的;将一个请求(行为)进行对象化,从而可以使用不同的请求对客户进行参数化。

key interface or class:

        1. command接口。

feature: 行为进行对象化。

structure:

template codes:

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

//实现不同的command,或者宏命令
class concreteCommand1: public Command{
public:
    excute() override{
        //...
    }
};
class concreteCommand1: public Command{
public:
    excute() override{
        //...
    }
}


summary:

1. command根本目的在于将“行为请求者”和“行为实现着”进行解耦,常见手段时将行为对象化;

2.concreteCommand可能根据需要保存一些额外的状态信息;

3.command模式和函数指针有点类似,但是两者在定义行为接口上有所区别:command通过“接口-实现”来定义行为接口规范,严格但是由性能损失;函数指针以函数签名来定义接口规范,更灵活性能更高;

4. 在其他语言,如java,c#等中应用更加广泛,因为c++泛型编程(设计模式弥补语言缺陷)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值