小弟我这样的类设计有有关问题吗? 有适合的模式吗?
我这样的类设计有问题吗?? 有适合的模式吗??
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命令模式,楼主自己看看设计模式方面的书吧。
------解决方案--------------------
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命令模式,楼主自己看看设计模式方面的书吧。
------解决方案--------------------