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 處置了要求