委派模式不屬於gof 23種設計模式。委派模式的基本作用就是負責任務的派遣和呼叫,跟**模式很像,可以看成一種特殊情況下的靜態的全權**。但是,**模式注重過程,委派模式注重結果。委派模式在spring種的應用場景非常多,我們最熟悉的dispatcherservlet就用到了委派模式。文中會簡單模仿下dispatcherservlet的實現。
在現實生活中也常有委派模式的發生場景,如 boss 給 leader 下達任務,leader 會根據實際情況給每個 coder 下發任務,等每個 coder 完成任務之後,leader 再把結果回報給 boss 。在此過程中 boss 只關心任務的完成情況,而不會關注 是哪個 coder 完成的哪個任務。下面就用乙個簡單的例子來說明委派模式:
1、建立 employee 介面
public inte***ce employee
2、建立碼農a
3、建立碼農bpublic class codera implements employee
}
4、建立leaderpublic class coderb implements employee
}
5、建立boss類,下達任務public class leader implements employee
// leader 自己是不幹活的,任務或發配給每個 coder
@voerride
public void code(string command)
}
6、測試結果public class boss
}
控制台輸出:public class test
}
我是 codeb ,我的工作內容是登入
由上述的小例子,應該可以看到, boss 只對 leader 下達命令,並沒有直接給 code 分配任務,分配任務由 leader 來做。也就是說 boss 委派 leader 來 分配任務。
dispatcherservlet
下面模仿 spring mvc 中 dispatcherservlet 的實現:
1、先建立乙個業務類 membercontroller
2、建立乙個訂單類 ordercontrollerpublic class membercontroller
}
3、建立乙個 systemcontrollerpublic class ordercontroller
}
4、建立 dispatcherservlet 類public class systemcontroller
public object logout()
}
}}5、web.xml 中的配置:
以上就實現了 spring mvc 中分發路由的功能,在真正的框架中的實現肯定不是寫死的,而是根據反射獲取所有的 uri ,在訪問時進行匹配,dispatcherservlet 的功能就是對請求進行分發,路由到對應的方法中。當然在 spring 中還有很多 委派模式,以 delegate 結尾的地方都實現了委派模式,有時間可以去了解一下。servlet
*.dispatcherservlet
1/*
委派的示例
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...