命令处理器模式(Command Processor)的思考

来源:互联网 发布:淘宝店铺店标怎么弄的 编辑:程序博客网 时间:2024/05/21 09:36

命令处理器模式(Command Processor)的思考

1.Command Processor模式的概述

具体请参考GOF或者POSA1。

2.思考

1.对于每个命令要求的参数怎么处理?
对于这个问题,一开始我看到这个模式的时候总感觉不理解,因为每个命令千差万别,尤其是每个命令对于参数的要求是不同的,为什么在定义命令的excecute()函数的时候总是没有参数呢?转而又想,不同的命令对象可以把参数保存到自己的成员变量中。

2.如果有很多命令对象怎么处理?
对于一般的应用可能会仅仅有几个命令对象,然后如果有很多命令对象的话,可能会造成类的膨胀,那如何避免这种现象呢?POSA1在讲述这个模式的时候给处理一下建议,然而我想说的是,这么多的小类如何高效的创建呢?关于这一点在Modern C++ Design中提到Small Object的分配问题,或许可以解决一点问题。再者,这么多命令对象的不断创建和销毁,对内存管理也是一个考验,尤其是对于嵌入式设备要求7*24小时没问题,所以对于嵌入式设备如果用C++开发的话,一般都需要自定义的内存管理模块,一般就是指内存池或者内存栈。

3.回调函数
可以说命令模式是C++中的回调函数,哈哈