设为首页 加入收藏

TOP

Active Object模式(二)
2015-07-20 17:41:17 来源: 作者: 【 】 浏览:3
Tags:Active Object 模式
", ::GetTickCount()); } }; class Move : public Command { public: virtual void exec() override { printf("Do move..., tick count: %d\n", ::GetTickCount()); } }; class SleepCopy : public Command { public: SleepCopy(ActiveObjectEngine& e, DWORD dwDelay) : m_Engine(e), m_dwStartTime(0), m_dwDelay(dwDelay) {} SleepCopy(const SleepCopy& cmd) : m_Engine(cmd.m_Engine), m_dwStartTime(cmd.m_dwStartTime), m_dwDelay(cmd.m_dwDelay) { } virtual void exec() override { if (m_dwStartTime == 0) { m_dwStartTime = ::GetTickCount(); std::unique_ptr newCmd(new SleepCopy(*this)); m_Engine.addCommand(std::move(newCmd)); } else { DWORD dwUsed = ::GetTickCount() - m_dwStartTime; if (dwUsed >= m_dwDelay) { printf("Do sleep copy..., delayed: %d ms\n", dwUsed); } else { std::unique_ptr newCmd(new SleepCopy(*this)); m_Engine.addCommand(std::move(newCmd)); } } } private: DWORD m_dwStartTime; DWORD m_dwDelay; ActiveObjectEngine& m_Engine; }; int _tmain(int argc, _TCHAR* argv[]) { ActiveObjectEngine engine; std::unique_ptr c1(new Copy()); std::unique_ptr c2(new Move()); std::unique_ptr c3(new SleepCopy(engine, 5000)); engine.addCommand(std::move(c1)); engine.addCommand(std::move(c2)); engine.addCommand(std::move(c3)); engine.run(); return 0; }

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 5011 Game(博弈论) 下一篇HDU5012 Dice 记忆化搜索

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)