日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java责任链模式做优惠_Java设计模式菜鸟系列(十八)责任链模式建模与实现

發(fā)布時間:2025/3/20 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java责任链模式做优惠_Java设计模式菜鸟系列(十八)责任链模式建模与实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

責任鏈模式(ChainOfResponsibility): 有多個對象,每個對象持有下一個對象的引用,形成一條鏈,請求在這條鏈上傳遞,直到某一對象決定處理該請求,但是發(fā)出者并不清楚最終哪個對象會處理該請求。

一、uml建模:

二、代碼實現(xiàn)

/**

* 責任鏈模式:有多個對象,每個對象持有下一個對象的引用,形成一條鏈,

*

* 請求在這條鏈上傳遞,直到某一對象決定處理該請求,

*

* 但是發(fā)出者并不清楚最終哪個對象會處理該請求。

*/

interface Handler {

public void operator();

}

/**

* 這里單獨對Handler進行封裝,方便修改引用對象

*/

abstract class AbstractHandler implements Handler {

private Handler handler;

public Handler getHandler() {

return handler;

}

public void setHandler(Handler handler) {

this.handler = handler;

}

}

class MyHandler extends AbstractHandler implements Handler {

private String name;

public MyHandler(String name) {

this.name = name;

}

@Override

public void operator() {

if (getHandler() != null) {

System.out.print(name + ",將BUG交給——>");

/**

* 這里是關鍵。【注意1】這里不是遞歸哦~

*

* 遞歸:A(operator)——>A(operator)——>A(operator)

*

* 責任鏈:A(operator)——>B(operator)——>C(operator)

*/

getHandler().operator();

} else {

System.out.println(name + "處理BUG...\n");

}

}

}

/**

* 客戶端測試類

*

* @author Leo

*/

public class Test {

public static void main(String[] args) {

MyHandler handler1 = new MyHandler("技術總監(jiān)");

MyHandler handler2 = new MyHandler("項目經(jīng)理");

MyHandler handler3 = new MyHandler("程序員");

/**

* 如果沒有下家,將會自行處理

*

* 打印結果:技術總監(jiān)處理BUG...

*/

handler1.operator();

/**

* 只要有下家,就傳給下家處理

*

* 下面的打印結果:技術總監(jiān),將BUG交給——>項目經(jīng)理,將BUG交給——>程序員處理BUG...

*

* 就這樣,原本是技術總監(jiān)自行處理的BUG,現(xiàn)在一層一層的把責任推給了程序員去處理

*/

handler1.setHandler(handler2);

handler2.setHandler(handler3);

/**

* 透過打印結果可以知道:MyHandler實例化后將生成一系列相互持有的對象(handler),構成一條鏈。

*/

handler1.operator();

/**

* 【注意2】責任鏈不是鏈表:鏈表有個頭結點,咱每次必須通過頭結點才能訪問后面的節(jié)點

*

* 而責任鏈它可以從頭訪問,也可以從中間開始訪問,如:handler2.operator();

*/

}

}

三、總結

1、責任鏈模式可以實現(xiàn),在隱瞞客戶端(不知道具體處理的人是誰)的情況下,對系統(tǒng)進行動態(tài)的調(diào)整。 2、鏈接上的請求可以是一條鏈,可以是一個樹,還可以是一個環(huán),模式本身不約束這個,需要自己去實現(xiàn),同時,在一個時刻,命令只允許由一個對象傳給另一個對象,而不允許傳給多個對象。

總結

以上是生活随笔為你收集整理的java责任链模式做优惠_Java设计模式菜鸟系列(十八)责任链模式建模与实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。