設計模式筆記(二十) 職責鏈模式

2021-04-21 07:02:02 字數 1375 閱讀 9125

職責鏈模式(chain of responsibility):使多個物件都有機會處理請求,從而避免請求的傳送者接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

優點:當客戶提交乙個請求時,請求是沿鏈傳遞直到有乙個concretehandler物件負責處理它。這就使得接收者和傳送者都沒有對方的明確資訊,且鏈中的物件自己也不知道鏈的結構,結果是職責鏈可以簡化物件的相互連線,它們僅需保持乙個指向其後繼者的引用,而不需保持它所有的候選接收者的引用,這就大大降低了耦合度,增加了給物件指派職責的靈活性。 

using system;

using system.collections.generic;

/*** 職責鏈模式(chain of responsibility):使多個物件都有機會處理請求,從而避免請求的傳送者接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

* 優點:當客戶提交乙個請求時,請求是沿鏈傳遞直到有乙個concretehandler物件負責處理它。這就使得接收者和傳送者都沒有對方的明確資訊,且鏈中的物件自己也不知道鏈的結構,結果是職責鏈可以簡化物件的相互連線,它們僅需保持乙個指向其後繼者的引用,而不需保持它所有的候選接收者的引用,這就大大降低了耦合度,增加了給物件指派職責的靈活性。

*/namespace studesignmode.chainofduty

public

void setsuccessor(abshandler successor)

public

abstract

void handlerquest(int request);

}class concretehandler1 : abshandler

處理請求", this.gettype().name,request);

}else

if(this.successor != null)}}

class concretehandler2 : abshandler

處理請求", this.gettype().name,request);

}else

if (this.successor != null)}}

class concretehandler3 : abshandler

處理請求", this.gettype().name,request);

}else

if (this.successor != null)}}

class clienttest

;foreach (int i in reqs)

console.writeline();}}

#endregion

}

設計模式(二十) 職責鏈模式

職責鏈模式,使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。1.如下 using system namespace chainofresponsibility using system namespace...

設計模式(二十)職責鏈模式

職責鏈模式 chain of responsbility 使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件啊連城一條鏈,並沿著這條鏈傳遞改請求,直到有乙個物件處理他為止 public abstract class handler 處理請求的抽象方法 public a...

二十 職責鏈模式

職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,知道有乙個物件處理它為止。ifndef handler h define handler h include using ...