Delegate Pattern 委派模式

2021-09-26 06:55:42 字數 2066 閱讀 3630

委派模式不屬於gof 23種設計模式。委派模式的基本作用就是負責任務的派遣和呼叫,跟**模式很像,可以看成一種特殊情況下的靜態的全權**。但是,**模式注重過程,委派模式注重結果。委派模式在spring種的應用場景非常多,我們最熟悉的dispatcherservlet就用到了委派模式。文中會簡單模仿下dispatcherservlet的實現。

在現實生活中也常有委派模式的發生場景,如 boss 給 leader 下達任務,leader 會根據實際情況給每個 coder 下發任務,等每個 coder 完成任務之後,leader 再把結果回報給 boss 。在此過程中 boss 只關心任務的完成情況,而不會關注 是哪個 coder 完成的哪個任務。下面就用乙個簡單的例子來說明委派模式:

1、建立 employee 介面

public inte***ce employee
2、建立碼農a

public class codera implements employee 

}

3、建立碼農b

public class coderb implements employee 

}

4、建立leader

public class leader implements employee 

// leader 自己是不幹活的,任務或發配給每個 coder

@voerride

public void code(string command)

}

5、建立boss類,下達任務

public class boss 

}

6、測試結果

public class test 

}

控制台輸出:

我是 codeb ,我的工作內容是登入
由上述的小例子,應該可以看到, boss 只對 leader 下達命令,並沒有直接給 code 分配任務,分配任務由 leader 來做。也就是說 boss 委派 leader 來 分配任務。

dispatcherservlet

下面模仿 spring mvc 中 dispatcherservlet 的實現:

1、先建立乙個業務類 membercontroller

public class membercontroller 

}

2、建立乙個訂單類 ordercontroller

public class ordercontroller 

}

3、建立乙個 systemcontroller

public class systemcontroller 

public object logout()

}

4、建立 dispatcherservlet 類

}}5、web.xml 中的配置:

servlet

*.dispatcherservlet

1/*

以上就實現了 spring mvc 中分發路由的功能,在真正的框架中的實現肯定不是寫死的,而是根據反射獲取所有的 uri ,在訪問時進行匹配,dispatcherservlet 的功能就是對請求進行分發,路由到對應的方法中。當然在 spring 中還有很多 委派模式,以 delegate 結尾的地方都實現了委派模式,有時間可以去了解一下。

委派的示例

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...

委派模式(Delegate)

委派模式 delegate 是物件導向設計模式中常用的一種模式。這種模式的原理為類b和類a是兩個互相沒有任何關係的類,b具有和a一模一樣的方法和屬性 並且呼叫b中的方法,屬性就是呼叫a中同名的方法和屬性。b好像就是乙個受a授權委託的中介。第三方的 不需要知道a的存在,也不需要和a發生直接的聯絡,通過...

委派建構函式

1,可以形成鏈狀的委託建構函式,但是不可以形成委託環 class weipai2 public weipai2 string name weipai2 name,1 weipai2 int weipai2 ch weipai2 weipai2 1 以下是我的測試 include using name...