二十六 職責鏈模式

2022-02-25 20:14:25 字數 1483 閱讀 7865

職責連模式:

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

優點:

請求是沿鏈傳遞至有乙個concretehandler物件處理它

但要注意鏈尾是否能處理所有請求

demo1

//處理請求的介面

abstract class handler

protected handler successor;

public void setsuccessor(handler successor)//設定繼任者

this.successor = successor;

//處理請求的抽象方法

public abstract void handlerrequest(int request);

//有權處理0-10之間

class concretehandler1:handler

public override voidhandlerrequest(int request)

if (request >= 0 && request < 10)

console.writeline("處理請求",

this.gettype().name,request);

else if (successor != null)

successor.handlerrequest(request);//轉移到下一位

// 有權處理10-20之間

class concretehandler2 : handler

public override void handlerrequest(int request)

if (request >= 10&& request < 20)

console.writeline("處理請求",

this.gettype().name,request);

else if (successor != null)

successor.handlerrequest(request);//轉移到下一位

static void main(stringargs)

handler h1 = new concretehandler1();

handler h2 = new concretehandler2();

handler h3 = new concretehandler3();

h1.setsuccessor(h2);

h2.setsuccessor(h3);

int request = ;

foreach (int i in request)

h1.handlerrequest(i);

console.readkey();

二十 職責鏈模式

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

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

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

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

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