首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我这样的类设计有有关问题吗? 有适合的模式吗?

2012-02-08 
我这样的类设计有问题吗?? 有适合的模式吗??classcommunicationThread:publicTThread,publiccommunition//

我这样的类设计有问题吗?? 有适合的模式吗??
class   communicationThread:public   TThread   ,public   communition         //   定义通讯子线程类      
{
        public:
                _fastcall   communicationThread(char*   projectname);
                _fastcall   ~communicationThread(void);
void   _fastcall   Execute(void);
        private:
               

};


class   communicationThread1:public   TThread   ,public   communition         //   定义通讯子线程类      
{
        public:
                _fastcall   communicationThread1(char*   projectname);
                _fastcall   ~communicationThread1(void);
void   _fastcall   Execute(void);
        private:
               
               


};


class   communicationThread2:public   TThread   ,   publiccommunication   communition         //   定义通讯子线程类
{
        public:
                _fastcall   communicationThread2(char*   projectname);
                _fastcall   ~communicationThread2(void);
void   _fastcall   Execute(void);
        private:
               

};


class   communication
{
public:
                _fastcall   communication(char*   projectname);
                _fastcall   ~communication(void);
private:
void   _fastcall   Execute(void);
                unsigned   char   buffer[512];
                unsigned   short   databuffer[800];
                unsigned   long   nBytesWritten   ;
                int   g_wavedata;
                saveData   *sdata   ;

};
communicationThread     communicationThread1   communicationThread2
的对象会在不同的地方使用,   他们   Execute(void);的函数实现不同   其余的都一样/


因此我让他们继承   communication   和TThread     类   .

这样可以吗??

大家都说接口很重要     我这需要设计一个接口类吗??


只有这么多分了   请见谅   大家批批看.




[解决办法]
定义以下接口类:
class communicationI
{
void _fastcall Execute(void)=0;
};
所有的客户端都使用此communicationI对象,用全局函数或工厂模式创建communicationI接口对象。
这样,当你要更改你的实现类时,你的所有客户端代码就可以不修改,如果客户端是在另一程序模块里,还可以不重新编译,真正达到COM里所说的二进制兼容性。
[解决办法]
楼主的以上设计属于经典的Command命令模式,楼主自己看看设计模式方面的书吧。
------解决方案--------------------


看你需要什么了,使用functor或许就够了
用boost::bind尝试下
[解决办法]
感觉有些over design了,另从名字上看来communicationThread这几个类粒度有点粗,communication类也是如此
[解决办法]
帮顶

热点排行