通訊兵(Chain of Responsibility) (轉)
如果看英文名字的話你可能會想到責任鏈.其定義為使多個都有機會處理
請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,
並沿著這條鏈傳遞該請求,直到有一個物件處理它為止。那麼可能會誤解.
其實這個很類似訊息通訊.也就好象是在對應的訊息.至少我看完這個
模式首先想到的就是這個.的確也是十分象.你甚至也可以構造一個控制程式碼來判斷訊息
處理函式.當然我們沒必要那麼些 ...case ....那不方便.而且
要適合物件導向原則.其實這很靈活可以想到的程式碼方案很多.單必須考慮
1.要適合擴充.2.要方便.下面是我提供的一組解決方案
假設.一個家長對他的孩子有一下訊息"吃飯" "睡覺" "讀書",吃飯必須要在
餐廳.睡覺在臥室.讀書在圖書管
//構造訊息控制程式碼
public interface IHandler{
//string HandlerName{get;}
void Request();
}
//事件
public class DiningHandler : IHandler{
public void Request(){
Console.WriteLine("吃飯");
}
}
public class RestHandler : IHandler{
public void Request(){
Console.WriteLine("睡覺");
}
}
public class ReadHandler : IHandler{
public void Request(){
Console.WriteLine("讀書");
}
}
//事件管理者
public class ManagerHandler {
public IHandler ;//事件源
public ManagerHandler(IHandler s){
this.source=s;
}
public void Execute(IRequest request){
request.Execute(this.source);//有實際的來
}
}
//處理器
public interface IRequest{
void Execute (Ihandler source);
}
public class myRequest : IRequest{
public void Execute (Ihandler source){
source.Request();
}
}
//客戶呼叫
public class Client
{
public static int Main(string[] args)
{
IHandler Dining=new DiningHanlder();
IHandler Rest=new RestHandler();
IHandler Read=new ReadHandler();
MangerHandler mh=new MangerHandler(Rest);
IRequest mr=new myRequest();
mh.Execute(mr);
mh.source=Dining;
mh.Execute(mr);
return 0;
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998953/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於 Chain of ResponsibilityAI
- (轉)職責鏈設計模式(Chain of Responsibility)設計模式AI
- Chain of Responsibility模式疑問AI模式
- 責任鏈模式(Chain Of Responsibility)模式AI
- 職責鏈模式(chain of responsibility)模式AI
- Chain of responsibility-責任鏈模式AI模式
- 看Chain of Responsibility模式後得疑問AI模式
- 談 C++17 裡的 Chain of Responsibility 模式C++AI模式
- 設計模式(十六)職責鏈模式(Chain of Responsibility)設計模式AI
- 關於Chain of Responsibility模式的一個問題AI模式
- C++設計模式——職責鏈模式( Chain of Responsibility Pattern)C++設計模式AI
- C#設計模式-責任鏈模式(Chain of Responsibility Pattern)C#設計模式AI
- C#設計模式系列:職責鏈模式(Chain of Responsibility)C#設計模式AI
- JAVA設計模式之 職責鏈模式【Chain of Responsibility Pattern】Java設計模式AI
- 設計模式的征途—14.職責鏈(Chain of Responsibility)模式設計模式AI
- Banq, 關於您的Chain of Responsibility模式的一些想法AI模式
- netlink 是 Go 和核心模組之間優秀的通訊兵Go
- 串列埠通訊 (轉)串列埠
- chain RH-Firewall-1-INPUT(轉)AI
- Oracle實時程式通訊(轉)Oracle
- VC++ 串列埠通訊(轉)C++串列埠
- 執行緒通訊初探 (轉)執行緒
- 由轉載開始—通訊—Mathworks
- vb開發通訊軟體 (轉)
- VC++ 的串列埠通訊 (轉)C++串列埠
- 【轉載】Java非同步通訊收藏Java非同步
- vb開發通訊軟體(cloud轉貼) (轉)Cloud
- 專案管理不能紙上談兵 (轉)專案管理
- 用VB除錯串列埠通訊 (轉)除錯串列埠
- 使用Oracle實現實時通訊(轉)Oracle
- 通訊業的專案特點(轉)
- 同步通訊和非同步通訊非同步
- 程式通訊 執行緒通訊執行緒
- ABAP 辨析ON INPUT|REQUEST|CHAIN-INPUT|CHAIN-REQUESTAI
- 通訊工程領域的專案管理(轉)專案管理
- MIDP與CGI和Servlet間通訊(轉)Servlet
- Servlet&Applet通訊補遺 (轉)ServletAPP
- job_chainAI