Java設計形式編程中的義務鏈形式應用示例。本站提示廣大學習愛好者:(Java設計形式編程中的義務鏈形式應用示例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java設計形式編程中的義務鏈形式應用示例正文
義務鏈形式:多個對象由其對象對應下家的援用連成一條鏈,要求在這個鏈上傳遞,直到 鏈上的某一個吸收對象處置此要求。由於要求的客戶端其實不曉得鏈上終究是誰來處置這個要求,使得體系可以在不影響客戶真個情形下靜態地從新組織和分派義務, 從而防止了要求發送者與要求處置者之間的耦合。
義務鏈械中觸及到三種腳色:
1,籠統處置者腳色
2,詳細處置者腳色
3,要求發送者
小例子:假定去買房子,買房子就須要砍價, 賣房的人職位分歧,可以優惠的價錢也分歧,分歧職位便可以構成一個處置要求的鏈。我們暫定: * 下層發賣員,只能優惠3% * 發賣司理:可以優惠5% * 發賣總監:可以優惠8% * 老板(Boss):優惠10%
Java實例
類圖:
/** * 籠統義務 */ public abstract class IFilter { private IFilter successor; public IFilter getSuccessor() { return successor; } public void setSuccessor(IFilter successor) { this.successor = successor; } public abstract void handleFilter(); public abstract void handleFilter2(); }
/** * 詳細義務 */ public class ConcreteFilter extends IFilter { private String name; public ConcreteFilter(String name) { this.name = name; } @Override public void handleFilter() { /* * 本身先處置,若有後繼者,再由它處置一次 */ System.out.println(name + " 處置了要求"); if (getSuccessor() != null) { getSuccessor().handleFilter(); } } @Override public void handleFilter2() { /* * 有後繼者就後繼者處置, 不然本身處置 */ if (getSuccessor() != null) { getSuccessor().handleFilter2(); } else { System.out.println(name + " 處置了要求"); } } }
public class Test { public static void main(String[] args) { IFilter filter1 = new ConcreteFilter("permission-filter");//權限過濾 IFilter filter2 = new ConcreteFilter("suffix-filter");//後綴名過濾 IFilter filter3 = new ConcreteFilter("style-filter");//作風過濾 filter1.setSuccessor(filter2); filter2.setSuccessor(filter3); System.out.println("------以下是每個處置者(包含後繼者)都處置了, 次序也是一級一級的傳遞------"); filter1.handleFilter(); System.out.println("------以下是交由最初一個後繼者處置------"); filter1.handleFilter2(); } }
打印:
------以下是每個處置者(包含後繼者)都處置了, 次序也是一級一級的傳遞------ permission-filter 處置了要求 suffix-filter 處置了要求 style-filter 處置了要求 ------以下是交由最初一個後繼者處置------ style-filter 處置了要求