程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java設計形式編程中的義務鏈形式應用示例

Java設計形式編程中的義務鏈形式應用示例

編輯:關於JAVA

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved