Java義務鏈設計形式。本站提示廣大學習愛好者:(Java義務鏈設計形式)文章只能為提供參考,不一定能成為您想要的結果。以下是Java義務鏈設計形式正文
義務鏈(Chain of Responsibility)形式是一種對象的行動形式。在義務鏈形式裡,許多對象由每個對象對其下家的援用而銜接起來構成一條鏈。要求在這個鏈上 傳遞,直到鏈上的某一個對象決議處置此要求。收回這個要求的客戶端其實不曉得鏈上的哪個對象終究處置這個要求,這使得體系可以在不影響客戶真個情形下靜態 地從新組織和分派義務。
義務鏈形式屬於行動型設計形式之一,怎樣懂得義務鏈?義務鏈是可以懂得成數個對象首尾銜接而成,每個節點就是一個對象,每一個對象對應分歧的處置邏輯,直至有一個對象呼應處置要求停止。這一種形式成為義務鏈形式。
生涯中可以找到義務鏈形式的原型嗎?這類例子許多,好比你要去買房子,起首是發賣人員(對象1)招待你,你說想要百分之3的扣頭,沒成績,這時候發賣人員就有打百分之三扣頭的權限,發賣人員(對象1)停止處置。這時候來了一個土豪,說要買10套,要百分之五的扣頭,發賣人員(對象1)沒有百分之五扣頭的權限,必需要想下級引導,發賣總監請求,發賣總監(對象2)批復了請求。這時候公民老公小王來了,小王說百分之十把樓盤全買了,這時候發賣總監(對象2)也沒那末年夜的權限了,要向CEO請求批復。
也就是說每個客戶(Client)都由發賣人員招待,客戶提出分歧的權限,由發賣人員交給分歧的對象停止遞次處置。客戶其實不關懷哪一個對象處置了他的要求,如許就下降了要求發送者和接收者之間的耦合關系。
上面我們經由過程一個出差差盤費盤川同意為例,完成以下義務鏈形式,起首界說一個籠統的引導類:
package com.test.demo; public abstract class Leader { protected Leader nextHandler;//上一級引導 public final void handlerRequest(int money){ if(money<=limit() ){//小於限制,可以批復 handler(money); }else{ if(nextHandler!=null){ nextHandler.handlerRequest(money);//交給上一級引導處置 } } } /* * 批款限額 */ public abstract int limit(); /* * 批款 */ public abstract void handler(int money); }
這是一個籠統類,上面經由過程幾個類繼續它,起首是小組長類:
package com.test.demo; public class GroupLeader extends Leader { public int limit() { return 1000;//解釋小組長有1000元的批復權限 } public void handler(int money) { System.out.println("小組長批復了"+money); } }
主管類:
package com.test.demo; public class Director extends Leader { @Override public int limit() { return 5000; } @Override public void handler(int money) { System.out.println("主管批復了"+money); } }
司理類:
package com.test.demo; public class Manager extends Leader { @Override public int limit() { return 10000; } @Override public void handler(int money) { System.out.println("司理批復了"+money); } }
老板類:
package com.test.demo; public class CEO extends Leader { @Override public int limit() { return Integer.MAX_VALUE; } @Override public void handler(int money) { System.out.println("CEO批復了"+money); } }
老板類無尚限。上面來界說一個人員小張請求差旅報銷:
package com.test.demo; public class XiaoZhang { public static void main(String[] args) { GroupLeader groupLeader=new GroupLeader(); Director director=new Director(); Manager manager=new Manager(); CEO ceo=new CEO(); groupLeader.nextHandler=director; director.nextHandler=manager; manager.nextHandler=ceo; groupLeader.handlerRequest(50000); groupLeader.handlerRequest(500); groupLeader.handlerRequest(5000); } }
小張一共像小組長請求了三筆,這時候運轉實例以下:
我們可以看到分歧的款子由分歧的對象停止了處置,小張其實不關懷誰處置的,他只需找小組長便可。這就是義務鏈形式的特色。
關於Java義務鏈設計形式的相干內容就給年夜家引見到這裡,願望對年夜家有所贊助!