一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Java設(shè)計(jì)模式編程中的責(zé)任鏈模式使用示例

Java設(shè)計(jì)模式編程中的責(zé)任鏈模式使用示例

2020-04-25 15:48匆忙擁擠repeat JAVA教程

這篇文章主要介紹了Java設(shè)計(jì)模式編程中的責(zé)任鏈模式使用示例,責(zé)任鏈模式可以避免很多請(qǐng)求的發(fā)送者和接收者之間的耦合關(guān)系,需要的朋友可以參考下

責(zé)任鏈模式:多個(gè)對(duì)象由其對(duì)象對(duì)應(yīng)下家的引用連成一條鏈,請(qǐng)求在這個(gè)鏈上傳遞,直到 鏈上的某一個(gè)接收對(duì)象處理此請(qǐng)求。因?yàn)檎?qǐng)求的客戶(hù)端并不知道鏈上最終是誰(shuí)來(lái)處理這個(gè)請(qǐng)求,使得系統(tǒng)可以在不影響客戶(hù)端的情況下動(dòng)態(tài)地重新組織和分配責(zé)任, 從而避免了請(qǐng)求發(fā)送者與請(qǐng)求處理者之間的耦合。
責(zé)任鏈械中涉及到三種角色:
1,抽象處理者角色
2,具體處理者角色
3,請(qǐng)求發(fā)送者
小例子:假設(shè)去買(mǎi)房子,買(mǎi)房子就需要砍價(jià), 賣(mài)房的人職位不同,可以?xún)?yōu)惠的價(jià)格也不同,不同職位就可以形成一個(gè)處理請(qǐng)求的鏈。我們暫定: * 基層銷(xiāo)售員,只能優(yōu)惠3% * 銷(xiāo)售經(jīng)理:可以?xún)?yōu)惠5% * 銷(xiāo)售總監(jiān):可以?xún)?yōu)惠8% * 老板(Boss):優(yōu)惠10%

Java實(shí)例
類(lèi)圖:

Java設(shè)計(jì)模式編程中的責(zé)任鏈模式使用示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * 抽象責(zé)任
 */
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();
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
 * 具體責(zé)任
 */
public class ConcreteFilter extends IFilter {
   
  private String name;
  public ConcreteFilter(String name) {
    this.name = name;
  }
   
  @Override
  public void handleFilter() {
    /*
     * 自己先處理,如有后繼者,再由它處理一次
     */
    System.out.println(name + " 處理了請(qǐng)求");
    if (getSuccessor() != null) {
      getSuccessor().handleFilter();
    }
  }
   
  @Override
  public void handleFilter2() {
    /*
     * 有后繼者就后繼者處理, 否則自己處理
     */
    if (getSuccessor() != null) {
      getSuccessor().handleFilter2();
    } else {
      System.out.println(name + " 處理了請(qǐng)求");
    }
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Test {
  public static void main(String[] args) {
    IFilter filter1 = new ConcreteFilter("permission-filter");//權(quán)限過(guò)濾
    IFilter filter2 = new ConcreteFilter("suffix-filter");//后綴名過(guò)濾
    IFilter filter3 = new ConcreteFilter("style-filter");//風(fēng)格過(guò)濾
    filter1.setSuccessor(filter2);
    filter2.setSuccessor(filter3);
    System.out.println("------以下是每一個(gè)處理者(包括后繼者)都處理了, 順序也是一級(jí)一級(jí)的傳遞------");
    filter1.handleFilter();
     
    System.out.println("------以下是交由最后一個(gè)后繼者處理------");
    filter1.handleFilter2();
     
  }
}

 

打印:

?
1
2
3
4
5
6
------以下是每一個(gè)處理者(包括后繼者)都處理了, 順序也是一級(jí)一級(jí)的傳遞------
permission-filter 處理了請(qǐng)求
suffix-filter 處理了請(qǐng)求
style-filter 處理了請(qǐng)求
------以下是交由最后一個(gè)后繼者處理------
style-filter 處理了請(qǐng)求

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩视频免费看 | 牛牛色婷婷在线视频播放 | 色吧导航 | 无遮免费网站在线入口 | 97久久久亚洲综合久久88 | 国产精品在线 | 91亚洲成人| 精品视频在线免费播放 | 1024毛片| 天堂网站天堂小说 | 国产私人影院 | 91在线免费播放 | 国语在线 | 亚洲性久久久影院 | 97久久精品午夜一区二区 | 荡女淫春2古装 | 国产在线伊人 | 欧美一级在线全免费 | 久久国产精品无码视欧美 | 日韩精品亚洲一级在线观看 | 日本视频免费在线播放 | 国产精品九九久久一区hh | 日本免费一区二区三区 | 日韩欧美亚洲一区二区综合 | 亚洲国产精品自在现线让你爽 | 国产精品久久久久久久久免费观看 | 免费观看欧美性一级 | 青青成人 | 亚洲精品www久久久久久久软件 | 高级黄色片 | 美女操批 | 亚洲视频一区二区在线观看 | 超91精品手机国产在线 | 麻豆最新地址 | 草草视频免费在线观看 | 亚洲色图2| 国产精品成人va在线观看 | 亚洲高清中文字幕精品不卡 | 青苹果乐园影院在线播放 | 四影虎库最新2021 | 麻豆视频免费在线观看 |