设计模式一日一练:命令模式(Command)

来源:互联网 发布:墨子号 知乎 编辑:程序博客网 时间:2024/05/02 01:14

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

// commandclass Command {    public:        virtual void Execute();};// commandclass Receiver;class ConcreteCommand: public Command {    public:        public ConcreteCommand(Receiver* receiver);        virtual void Execute();            private:        Receiver* receiver;};ConcreteCommand::ConcreteCommand(Receiver* receiver) {    this->receiver = receiver;}void ConcreteCommand::Execute() {    this->receiver->Action();}// receiverclass Receiver {    public:        void Action();}// class Invoker {    public:        void SetCommand(Command* cmd);        void ExecuteCommand();            private:        Command* command;}void Invoker::SetCommand(Command* cmd) {    this->command = cmd;}void Invoker::ExecuteCommand() {    this-command->Execute();}// testvoid Test() {    Receiver* receiver = new Receiver();    Command* command = new ConcreteCommand(receiver);    Invoker* invoker = new Invoker();    invoker->SetCommand(command);        invoker->ExecuteCommand();        // todo ...  destroy}


PS. 腾讯引擎技术中心的一位技术牛人写过一篇用命令模式封装多线程调用的blog,命令模式的典型应用场景。

PS. 我的设计模式系列blog,《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。

11 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老员工提出辞职怎么办 家人进看守所了怎么办 被贷款中介诈骗怎么办 喝完酒吐难受怎么办 犯罪嫌疑人死在看守所怎么办 犯罪嫌疑人死不承认怎么办 高血压进了看守所怎么办 看守所里被欺负怎么办 老师上课迟到了怎么办 艾滋病看守所不收怎么办 没能力偿还债务怎么办 监狱病人的癌症怎么办 监狱的传染病人怎么办 犯人在监狱重病怎么办 亲戚被关拘留所怎么办 打麻将被拘留怎么办 轻伤检察院不批捕怎么办 吸毒人被拘留怎么办 法院拘留没去怎么办 羁押期限超过了怎么办 羁押期限已满怎么办 刑事拘留22天了怎么办 被派出所拘留 车怎么办 被公安怀疑贩毒怎么办 报案后证据不足怎么办 担心丈夫复嫖怎么办 交通事故当事人重伤笔录怎么办 交通事故做完笔录后怎么办 罚款单子丢了怎么办 刑事案件人跑了怎么办 打架当事人跑了怎么办 赌博被派出所抓怎么办 治安案件人跑了怎么办 去警察局做笔录怎么办 未成年打架留下案底怎么办 土地被别人侵占怎么办 在公安局有案底怎么办 做小姐有案底怎么办 党员被黑社会打怎么办 周期内被扣15分怎么办 驾证扣了50分怎么办?