設計模式 職責鏈模式

2021-08-25 22:05:33 字數 1429 閱讀 9464

機房重構中上下機中可以用職責鏈模式,既然要用職責鏈模式,那就先對職責鏈模式進行一下了解。

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

個人理解:拿具體的生活栗子來說就是:如果你想要請不超過倆個小時的假,你就需要去找可以批倆個小時假許可權的紀委;如果你想請超過倆個小時的假,你就需要去找老師親自去請假;在這裡紀委和老師就可以看做是concretehandler,handler就可以抽象的理解為具有批假許可權的乙個管理者,你就比作了client。

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 職責鏈模式

public abstract void handlerequest(int request);//處理請求的抽象方法

}//concretehandler1,當請求數在0到10之間則有權處理,否則轉到下一位

class concretehandler1 : handler

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

}else if (successor != null)}}

//concretehandler2,當請求數在10到20之間則有權處理,否則轉移到下一位

class concretehandler2 : handler

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

}else if (successor != null)}}

//concretehandler3,當請求數在20到30之間則有權處理,否則轉到下一位

class concretehandler3 : handler

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

}else if (successor != null)}}

//客戶端**,向鏈上的具體處理者物件提交請求

class program

;foreach (int request in requests)//迴圈給最小處理者提交請求,不同的數額,由不同許可權處理者處理

console.read();}}

}

客戶端可以隨時增加或修改處理乙個請求的結構,增強了給物件指派職責的靈活性。客戶端不需要了解職責鏈內部的細節以及傳遞放向,只需要將請求傳送給請求的處理者,直到有乙個物件可以處理這個請求為止,降低了請求的傳送端與接收端之間的耦合關係。

設計模式 職責鏈模式

2008年08月17日 星期日 下午 04 28 using system using system.collections.generic using system.text public officer officer o public abstract void deal action a c...

設計模式 職責鏈模式

1 request.h ifndef request h define request h include include using namespace std class request 請求類定義 endif request h 2 manager.h ifndef manager h def...

設計模式 職責鏈模式

今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...