詳解什么是C#回調(diào)
1.什么是回調(diào)函數(shù)
回調(diào)函數(shù)(callbackFunction),顧名思義,用于回調(diào)的函數(shù)?;卣{(diào)函數(shù)只是一個功能片段,由用戶按照回調(diào)函數(shù)調(diào)用約定來實現(xiàn)的一個函數(shù)?;卣{(diào)函數(shù)是一個工作流的一部分,由工作流來決定函數(shù)的調(diào)用(回調(diào))時機。回調(diào)函數(shù)包含下面幾個特性:
屬于工作流的一個部分;
必須按照工作流指定的調(diào)用約定來申明(定義);
他的調(diào)用時機由工作流決定,回調(diào)函數(shù)的實現(xiàn)者不能直接調(diào)用回調(diào)函數(shù)來實現(xiàn)工作流的功能;
2.C#回調(diào)機制
C#回調(diào)機制是一種常見的設(shè)計模型,他把工作流內(nèi)的某個功能,按照約定的接口暴露給外部使用者,為外部使用者提供數(shù)據(jù),或要求外部使用者提供數(shù)據(jù)。
如上圖所示,工作流提供了兩個對外接口(獲取參數(shù)、顯示結(jié)果),以回調(diào)函數(shù)的形式實現(xiàn)。
“獲取參數(shù)”回調(diào)函數(shù),需要工作流使用者設(shè)定工作流計算需要的參數(shù)。
“顯示結(jié)果”回調(diào)函數(shù),提供計算結(jié)果給工作流使用者。
3.C#回調(diào)機制應(yīng)用
使用回調(diào)機制,可以為工作流實現(xiàn)擴展??梢园压ぷ髁髦行枰脩舾深A(yù)的,或需要提供給用戶的數(shù)據(jù)以回調(diào)的模式提供給用戶。而用戶不需要知道整個工作的流程,只需知道回調(diào)函數(shù)的說明就可以使用工作流模塊提供的功能,這對信息的隱藏也是有作用的。
4.回調(diào)機制的實現(xiàn)形式
回調(diào)函數(shù)
虛擬函數(shù)
事件
example:以虛函數(shù)實現(xiàn)回調(diào)機制(有時間補充C#版本)
- Code
- classCWorkFlow
- {
- voidinit()
- {
- _a=0;
- _b=0;
- }
- int_a;
- int_b;
- public:
- voidStart()
- {
- //初始化
- init();
- //調(diào)用處理數(shù)據(jù)
- Handle(a,b);
- //報告結(jié)果
- Report(a,b);
- }
- virtualvoidHandle(int&a,int&b)=0;
- virtualvoidReport(intiRet)=0;
- };
- classCMain:
- publicCWorkFlow
- {
- public:
- voidHandle(int&a,int&b)
- {
- a=a+b/2;
- }
- voidReport(intiRet)
- {
- printf("iRet=%d\n",iRet);
- }
- };
- //application
- intmain()
- {
- CMainmain;
- main.Start();
- }
本文來自王之永的博客園博文《C#回調(diào)》
【編輯推薦】