ChainOfResponsibility是一个非常不错的设计思想,将一些相同的操作作为一个链进行传递,在合适的方位进行处理。这个用在Command传递的时候最为有用,因而我将ChainOfResponsibility与Command设计方法放在一起。
当一个键盘消息或一个鼠标消息需要被处理时,那么该消息应该在何处被处理才是问题的关键!ChainOfResponsibility提供了一个非常有利的方法,而且由于利用了虚拟函数功能,避免了链数据结构的设计,同时如果采用类似MFC的OnMsgCmd命令设计方法,那么一个命令消息将沿着它的上升沿(父类)不断被解读,不断被分析是否需要处理,一旦处理完毕就立即返回。
采用Command方法设计的消息命令,在链接ChainOfResponsibility中采用该Command类进行设计,那么当需要进行Command扩展的时候,可以很方面的试用Command类的子类定义,这个时候利用虚拟函数就可以很好的处理好Command子类的在ChainOfResponsibility功能。
设计ChainOfResponsibility类需要设计多个类,定义其中一个基类,同时设计Command类的时候需要设计好Client以及发送Command类的Invoker。两者之间的融合需要类的组合方式进行处理!
这篇文章写的很粗糙,请各位看完后不要拍砖!