Java與設計模式 責任鏈模式

2021-09-07 13:17:58 字數 1683 閱讀 1825

責任鏈模式屬於行為型設計模式之中的乙個,怎麼理解責任鏈?責任鏈是能夠理解成數個物件首尾連線而成,每個節點就是乙個物件。每個物件相應不同的處理邏輯,直至有乙個物件響應處理請求結束。這一種模式成為責任鏈模式。

生活中能夠找到責任鏈模式的原型嗎?這樣的樣例非常多。比方你要去買房子。首先是銷售人員(物件1)接待你。你說想要百分之3的折扣,沒問題。這時銷售人員就有打百分之三折扣的許可權,銷售人員(物件1)進行處理。這時來了乙個土豪。說要買10套,要百分之五的折扣。銷售人員(物件1)沒有百分之五折扣的許可權。必需要想上級領導,銷售總監申請,銷售總監(物件2)批覆了申請。這時國民老公小王來了,小王說百分之十把樓盤全買了。這時銷售總監(物件2)也沒那麼大的許可權了。要向ceo申請批覆。

也就是說每個客戶(client)都由銷售人員接待,客戶提出不同的許可權,由銷售人員交給不同的物件進行遞次處理。客戶並不關心哪個物件處理了他的請求,這樣就減少了請求傳送者和接受者之間的耦合關係。

以下我們通過乙個出差差旅費批准為例,實現以下責任鏈模式。首先定義乙個抽象的領導類:

package com.test.demo;

public abstract class leader else

} }/* * 批款限額

*/public abstract int limit();

/* * 批款

*/public abstract void handler(int money);

}

這是乙個抽象類。以下通過幾個類繼承它,首先是小組長類:

package com.test.demo;

public class groupleader extends leader

public void handler(int money)

}

主管類:

package com.test.demo;

public class director extends leader

@override

public void handler(int money)

}

經理類:

package com.test.demo;

public class manager extends leader

@override

public void handler(int money)

}

老闆類:

package com.test.demo;

public class ceo extends leader

@override

public void handler(int money)

}

老闆類無上限。以下來定義乙個職員小張申請差旅報銷:

package com.test.demo;

public class xiaozhang

}

小張一共像小組長申請了三筆,這時執行實比例如以下:

我們能夠看到不同的款項由不同的物件進行了處理。小張並不關心誰處理的,他僅僅要找小組長就可以。這就是責任鏈模式的特點。

喜歡的朋友關注,謝謝

java設計模式 責任鏈模式

步驟一 建立抽象處理者 handler 角色 這裡是操作與處理分開,介面定義操做方法,抽象類定義處理方法,具體可以寫在一起也行 public inte ce handlerpublic abstract class abstracthandler public void sethandler han...

Java設計模式 責任鏈模式

責任鏈模式責任鏈的應用場景 servlet api 中的filter過濾器 mvc 框架中的 簡單使用責任鏈模式拆分 servlet api 中的過濾器 模擬servlet中的request物件 desc模擬 servlet 中的 request 物件 模擬servlet中的response物件 d...

java設計模式之責任鏈模式

chain ofresponsibility cor 模式也叫職責鏈模式或者職責連鎖模式,是行為模式之一,該模式構造一系列分別擔當不同的職責的類的物件來共同完成乙個任務,這些類的物件之間像鏈條一樣緊密相連,所以被稱作職責鏈模式。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。在這種模式中,通...