設計模式之責任鏈模式總結

2021-08-19 22:24:47 字數 1580 閱讀 2476

快速引入

責任鏈模式,首先肯定是一條鏈,然後鏈上每個節點都有他的責任,任務在鏈上傳遞,假設從第乙個開始傳遞,傳遞到下乙個時候如果他有責任處理這個事情就處理,沒責任,或者不能處理就傳遞下去,依次這樣。直到傳到最後乙個或者事情被處理完。這個非常好理解,跟日常公司中報銷一樣,如果你要報銷5w,如果你的直接領導沒許可權報5w,就會轉交給經理,經理沒有就轉給總經理,總經理沒有就轉到老闆,然後批覆。

實戰

public

abstract

class leader else

if (nexthandler != null)

}//自己能處理的金額上限

public

abstract

intlimit();

//處理

public

abstract

void

handle(int money);

}

然後定義各個具體領導者

public

class

director

extends

leader

@override

public

void

handle(int money)

}public

class

manager

extends

leader

@override

public

void

handle(int money)

}public

class

boss

extends

leader

@override

public

void

handle(int money)

}

然後呼叫的時候,先將每個領導的上級設定好

//例項化具體領導者

director director = new director();

manager manager = new manager();

boss boss = new boss();

//設定每個領導者的上級

director.nexthandler=manager;

manager.nexthandler=boss;

//發起報賬請求,可以從director請求,也可以越過他,在現實生活中這是准許的。

//因為你明知道有些主管報不了,或者主管不在了,你肯定得找上一級

// manager.nexthandler=boss;

director.handlerequest(50000);

總結

我想如果不用設計模式這種來做的話,我們的**肯定非常難看,你可以自己實踐一下,其實學習設計模式我都推崇在學這種模式領會了含義之後,你用自己原來的方式實現一次,再去按照設計模式的思想實現一次,你就會體會他有哪兒好了,很明顯所有的設計模式都有的優點解耦、**靈活,當然最大的缺點你們也看到了,需要一層層傳遞,如果這個關係鏈特別長的話,每次請求都挺消耗效能的。

設計模式之 責任鏈模式

在一些情況下,對乙個訊息 含事件 的響應和處理需要很多物件來參與,這些物件對訊息的處理有前後順序,形成乙個處理鏈條,但物件是否真正處理訊息有賴於在它之前的物件的處理策略,前乙個物件處理後,後乙個物件則不需參與處理,這就是責任鏈模式。現實中有很多類似的場景,比如上訪,上訪一般是從最基層的信訪部門接受信...

設計模式之(責任鏈模式)

chain of responsibleity 責任鏈模式 在責任鏈模式 中,很多物件由每乙個物件對其下家的引用而接。起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。客戶並不知道鏈上的哪乙個物件最終處理這個請求,系統可以在不影響客戶端的情況下動態的重新組織鏈和分配責任。處理者...

設計模式之責任鏈模式

假設現在乙個公司的請假流程如下 一天及以下由小組組長審批,一天以上三天以下由經理審批,三天以上七天以下由老闆審批,七天以上直接勸退。如果每次請假時都很長的if else 來判斷該去找誰請假,很不容易擴充套件,我們使用責任鏈模式來實現。首先,是乙個抽象的父類 public abstract class...