框架
wh8_2011
这个作者很懒,什么都没留下…
展开
-
值得推荐的C/C++框架和库
得学习的C语言开源项目Libeventlibev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。下载链接:https://github.com/libe转载 2017-03-24 15:07:13 · 376 阅读 · 0 评论 -
C++设计模式10--命令模式(一)--降低请求发送者与接收者耦合
命令模式概述在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern) 工作了一天感觉好累,洗了个澡,打开电视看看有没有转载 2017-12-20 09:05:13 · 174 阅读 · 0 评论 -
C++设计模式10--命令模式(二)(Command)--降低请求发送者与接收者耦合
工作了一天感觉好累,洗了个澡,打开电视看看有没有喜欢的节目,拿起遥控器,看着上面的按钮,忽然感觉好奇妙,我们按一开机键,电视就开了,然后...哈哈,真好玩,我按我按。细想之下这不就是一个命令模式么。电视机是请求的接收者Receiver,遥控器是请求的发送者ConcreteCommand,遥控器上有一些按钮,不同的按钮对应电视机的不同操作。抽象命令角色由一个命令接口来转载 2017-12-20 09:07:36 · 179 阅读 · 0 评论 -
请求发送者与接收者解耦——命令模式(三)
4 命令队列的实现 有时候我们需要将多个请求排队,当一个请求发送者发送一个请求时,将不止一个请求接收者产生响应,这些请求接收者将逐个执行业务方法,完成对请求的处理。此时,我们可以通过命令队列来实现。 命令队列的实现方法有多种形式,其中最常用、灵活性最好的一种方式是增加一个CommandQueue类,由该类来负责存储多个命令对象,而不同的命令对象可以对应不同的请求接收转载 2017-12-20 09:10:09 · 187 阅读 · 0 评论 -
请求发送者与接收者解耦——命令模式(四)
5 撤销操作的实现 在命令模式中,我们可以通过调用一个命令对象的execute()方法来实现对请求的处理,如果需要撤销(Undo)请求,可通过在命令类中增加一个逆向操作来实现。扩展除了通过一个逆向操作来实现撤销(Undo)外,还可以通过保存对象的历史状态来实现撤销,后者可使用备忘录模式(Memento Patter转载 2017-12-20 09:15:17 · 308 阅读 · 0 评论 -
请求发送者与接收者解耦——命令模式(五)
6 请求日志 请求日志就是将请求的历史记录保存下来,通常以日志文件(Log File)的形式永久存储在计算机中。很多系统都提供了日志文件,例如Windows日志文件、Oracle日志文件等,日志文件可以记录用户对系统的一些操作(例如对数据的更改)。请求日志文件可以实现很多功能,常用功能如下: (1) “天有不测风云”,一旦系统发生故障,日志文件可以为系统提供一种转载 2017-12-20 09:19:07 · 233 阅读 · 0 评论 -
请求发送者与接收者解耦——命令模式(六)
7 宏命令 宏命令(Macro Command)又称为组合命令,它是组合模式和命令模式联用的产物。宏命令是一个具体命令类,它拥有一个集合属性,在该集合中包含了对其他命令对象的引用。通常宏命令不直接与请求接收者交互,而是通过它的成员来调用接收者的方法。当调用宏命令的execute()方法时,将递归调用它所包含的每个成员命令的execute()方法,一个宏命令的成员可以是简单命令,转载 2017-12-20 09:22:59 · 280 阅读 · 0 评论