delegate模式

delegate模式,如果一個常用的代碼片段出現在了程式中的幾個不同地方,重構它,把它放到一個自己的函數裡。重複的代碼會導致你的同事在讀你的代碼時產生困惑。而重複的代碼如果在一個地方修改,在另外一個地方忘記修改,就會產生到處是bug,它還會使你的代碼體積變得臃腫。現代的程式語言提供了很好的方法來解決這些問題,例如,下面這個問題在以前很難解決

如果一個常用的代碼片段出現在了程式中的幾個不同地方,重構它,把它放到一個自己的函數裡。重複的代碼會導致你的同事在讀你的代碼時產生困惑。而重複的代碼如果在一個地方修改,在另外一個地方忘記修改,就會產生到處是bug,它還會使你的代碼體積變得臃腫。現代的程式語言提供了很好的方法來解決這些問題,例如,下面這個問題在以前很難解決,而如今使用lambdas卻很好實現:
/// <summary>/// 一些函式含有部分重複代碼/// </summary>void OriginalA(){ DoThingsA(); // unique code DoThingsB();}/// <summary>/// 另外一個含有部分重複代碼的函式/// </summary>void OriginalB(){ DoThingsA(); // 沒有重複的代碼 DoThingsB();}現在我們重構含有部分相同代碼的函式,用delegate模式重寫它們:
/// <summary>/// Encapsulate shared functionality/// </summary>/// <param name="action">User defined action</param>void UniqueWrapper(Action action){ DoThingsA(); action(); DoThingsB();}/// <summary>/// New implmentation of A/// </summary>void NewA(){ UniqueWrapper(() => { // unique code });}/// <summary>/// New implementation of B/// </summary>void NewB(){ UniqueWrapper(() => { // unique code });}

相關詞條

熱門詞條

聯絡我們