通訊兵(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 Responsibility)模式AI
- Chain of responsibility-責任鏈模式AI模式
- 設計模式-職責鏈模式(Chain of Responsibility)設計模式AI
- 談 C++17 裡的 Chain of Responsibility 模式C++AI模式
- C#設計模式-責任鏈模式(Chain of Responsibility Pattern)C#設計模式AI
- c/c++ 設計模式-----職責鏈(Chain Of Responsibility)模式C++設計模式AI
- C++設計模式——職責鏈模式( Chain of Responsibility Pattern)C++設計模式AI
- netlink 是 Go 和核心模組之間優秀的通訊兵Go
- Oracle實時程式通訊(轉)Oracle
- 通訊協議轉換Modbus轉Profinet閘道器協議
- 騰訊-廣點通轉化歸因
- ABAP 辨析ON INPUT|REQUEST|CHAIN-INPUT|CHAIN-REQUESTAI
- Markov Chain & Monte CarloAI
- E. Chain ReactionAIReact
- C. Divisor ChainAI
- Chain-of-Thought PromptingAI
- 數字化轉型 2.0 時代,SUSE 亮出輕騎兵
- 程序間的通訊(訊號通訊)
- iptables:No chain/target/match by the nameAI
- Trusted Block Chain Summit(2018.10.09)RustBloCAIMIT
- 快速入門 LLM ChainAI
- 【React】元件通訊 - 跨層通訊React元件
- 騰訊廣告,一個龐大的 AI「練兵場」AI
- 例項詳解不同VLAN間通訊(轉發過程)
- CAsyncSocket TCP協議通訊速度慢的問題(轉)TCP協議
- 程序通訊--訊號
- 程序通訊-訊號
- 網路通訊協議自動轉換之thrift到http協議HTTP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- Binder通訊機制與IPC通訊.md
- 網路通訊2:TCP通訊實現TCP
- 紅色通訊史(三):延安通訊故事
- Rust中的迭代器的使用:map轉換、filter過濾、fold聚合、chain連結RustFilterAI
- 《機甲戰士5:僱傭兵》再次跳票 目前轉為Epic獨佔
- socket通訊
- TCP通訊TCP
- 安全通訊
- react通訊React