委託委託,誰委託誰?

2021-08-21 21:58:34 字數 1370 閱讀 4680

真繞啊。

話說,我有個窗體程式,執行著乙個執行緒,執行緒裡各種操作。操作過程中,各種提示、

相關資訊需要記錄到日誌,同時也要輸出到窗體上,好讓人一目了然。

這部分的資訊處理工作,我放在乙個專門的類裡完成。姑且叫做日誌類吧。這個日誌類的正職,是將資訊記錄到日誌檔案。現在,還要輸出到窗體,怎麼辦呢?如果直接在這個類裡操作窗體物件,就破壞了這個類的封閉,又增加了耦合。如果是物件注入吧,可能也是個辦法,但我總覺得不是很好。今天輸出到窗體,你新增乙個物件;明天要記錄到資料庫呢,是不是又要增加個啥?

用委託啊。

日誌類裡宣告乙個委託,窗體註冊這個委託。委託委託,誰委託誰?各方委託給執行類去執行。將自己的私貨委託給執行類去執行。這有點像裝飾模式。執行類本身有自己的功能,然後大家委託它,給它刷了一層又一層的漆。在我這個例子中,日誌類就是執行類,窗體是委託方。

上**:

//執行緒中呼叫日誌類

logger.instance

.info($@"第 輪開始 ……");

//日誌類

public

class logger

-->");

}static logger instance = null;

public

static logger instance

return instance;}}

}

//窗體

public

partial

class form1 : form

}//窗體輸出資訊類

public

class showinfo

public

void

showtext(string mess)

;_rtb.invoke(dlg, mess);

}else

}long _rows = 0;

void showtext(object objmess)

else

_rtb.selectionstart = _rtb.text.length;

_rtb.scrolltocaret();}}

執行結果

日誌檔案:

窗體:

上面這個委託,現在說起來,思路非常清晰,看上去應該是很自然就能想到的,但當時卻想了好一陣子才理清頭緒。現在對委託的理解又深了一些。

C 委託,委託鏈,多播委託

委託 概念 委託是一種使用者自定義的型別.是一種類.可以把委託看成用來執行方法 函式的乙個東西 形式 delegate 函式返回型別 委託名稱 引數部分 例項化 委託型別 例項化名 new 委託型別 方法名稱 實現 usingsystem usingsystem.collections.generi...

C 委託 委託概述

c 委託概述 委託這個詞在生活中經常用到,委託律師打官司,委託房地產公司購買房子。委託保險 人辦理保險。委託就是把事情交給別人去辦。c 中的委託和生活中的委託很相似,如果將乙個方法委託給乙個物件,那麼這個物件就可以全權 這個方法執行。委託宣告定義乙個類,它是從 system.delegate 類派生...

C 委託 匿名委託

c 委託 匿名委託 委託變數在繫結方法時,是把方法名賦值給了委託變數名,這 樣就需要在類裡面定義方法,而有些方法只用到了 次,這樣的 方法在類裡面過多時,程式的可讀性就不是太好,針對這種情 況,可以使用匿名委託,即不用在類裡面額外定義方法.delegate定義的匿名委託 格式 delegate 引數...