(1)首先,妳需要理解C++接口的概念,就是壹個純虛類的定義,如:
#if _MSC_VER >= 1100
#define INTERFACE class
#else
#define INTERFACE interface
#endif
INTERFACE IHyEventHandler
{
public:
virtual RETCODE HYCALL OnEvent(ULONG ulEvent,void* pEventParam) = 0;
};
INTERFACE IHyEventSource
{
public:
virtual RETCODE HYCALL FireEvent(ULONG ulEvent,void* pEventParam)=0;
virtual RETCODE HYCALL RegisterHook(ULONG ulEvent,IHyEventHandler* pHandle)=0;
virtual RETCODE HYCALL UnRegisterHook(ULONG ulEvent,IHyEventHandler* pHandle)=0;
};
上述接口定義了壹個事件接口,壹個用於事件接收者,壹個用於事件發起者
(2)高耦合的對象,妳可以讓每個對象實現妳需要的接口(可以是多個),並且為了管理高耦合的對象,妳需要壹個對象管理者來管理這些對象(或管理對象的某些行為),如上述IHyEventSource 的 RegisterHook,UnRegisterHook,就是事件發起者,需要登記註冊接收者及其它需要接收那些事件,這樣在 IHyEventSource 的實現類(事件發起者)中能管理這些事件接收者及能夠有選擇的向事件接收者發出某種事件通知。
(3)通過特定的接口,就能實現對象間的高耦合需要,如上述事件接口,可讓高耦合的對象都同時是接收者及發起者,這樣,按妳題意如果A對象的某個行為需要B對象數據,且需要變更數據,A只要向B(也可以同時對n個對象)對象發出行為開始及行為結束2個事件,B對象對行為開始就返回A需要的信息,行為結束B就更新相關信息。
(4)使用接口模型解決對象間高耦合問題,最大的好處是,實現耦合的接口及實現代碼可以與對象類的其他實現部分無關,就是高耦合,但又高度模塊化,甚至,妳可以將耦合接口及實現封裝在壹個單獨的DLL中,只要接口不變,妳的DLL不會隨對象類的變化而需要重新編譯。
以上供妳參考,這種編程方法的針對妳應用的具體實現模型,主要是需要進行接口的高度抽象及定義,並要有壹個創建及發現接口統壹的編程模型。