国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java設計模式編程中的責任鏈模式使用示例

2019-11-26 14:22:36
字體:
來源:轉載
供稿:網友

責任鏈模式:多個對象由其對象對應下家的引用連成一條鏈,請求在這個鏈上傳遞,直到 鏈上的某一個接收對象處理此請求。因為請求的客戶端并不知道鏈上最終是誰來處理這個請求,使得系統可以在不影響客戶端的情況下動態地重新組織和分配責任, 從而避免了請求發送者與請求處理者之間的耦合。
責任鏈械中涉及到三種角色:
1,抽象處理者角色
2,具體處理者角色
3,請求發送者
小例子:假設去買房子,買房子就需要砍價, 賣房的人職位不同,可以優惠的價格也不同,不同職位就可以形成一個處理請求的鏈。我們暫定: * 基層銷售員,只能優惠3% * 銷售經理:可以優惠5% * 銷售總監:可以優惠8% * 老板(Boss):優惠10%

Java實例
類圖:

20165794216522.jpg (686×324)

/**  * 抽象責任  */ 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 處理了請求 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长顺县| 离岛区| 金秀| 汉沽区| 平罗县| 天峻县| 合作市| 太原市| 宝山区| 桐庐县| 博客| 芦山县| 莱西市| 山阴县| 城口县| 静安区| 遵义县| 嘉鱼县| 太仓市| 周口市| 仪征市| 莱阳市| 武平县| 凤台县| 安义县| 静安区| 阜新| 泽库县| 株洲县| 安义县| 博客| 衡南县| 广饶县| 斗六市| 射洪县| 郯城县| 拜城县| 呼伦贝尔市| 宿松县| 潍坊市| 灵璧县|