/** * 責任鏈模式 * @author TMAC-J * 老闆講任務交給CTO,CTO自然不會親自去做,又把人物分配給項目經理,項目經理再把任務分配給組長,組長再分配給個人 * 如果中途哪個環節出現了問題,比如項目經理請假了,組長直接接上,使得項目更加靈活 */ public class Res... ...
/** * 責任鏈模式 * @author TMAC-J * 老闆講任務交給CTO,CTO自然不會親自去做,又把人物分配給項目經理,項目經理再把任務分配給組長,組長再分配給個人 * 如果中途哪個環節出現了問題,比如項目經理請假了,組長直接接上,使得項目更加靈活 */ public class ResponsibleChain { abstract class Handler{ abstract void setNextHandler(Handler nextHandler); abstract Handler getNextHandler(); abstract void doHandler(String str); } public class CTOHanlder extends Handler{ private Handler nextHandler; @Override void setNextHandler(Handler nextHandler) { this.nextHandler = nextHandler; } @Override Handler getNextHandler() { return nextHandler; } @Override void doHandler(String str) { //其實這部分可以用模塊模式分出來,但是這樣會增加複雜度,所以此處不用 if("人手足夠".equals(str)){ nextHandler.doHandler(str); } else{ System.out.println("我自己處理.."); } } } public class ManageHanlder extends Handler{ private Handler nextHandler; @Override void setNextHandler(Handler nextHandler) { this.nextHandler = nextHandler; } @Override Handler getNextHandler() { return nextHandler; } @Override void doHandler(String str) { //其實這部分可以用模塊模式分出來,但是這樣會增加複雜度,所以此處不用 if("人手足夠".equals(str)){ nextHandler.doHandler(str); } else{ System.out.println("我自己處理.."); } } } public class WorkerHandler extends Handler{ private Handler nextHandler; @Override void setNextHandler(Handler nextHandler) { this.nextHandler = nextHandler; } @Override Handler getNextHandler() { return nextHandler; } @Override void doHandler(String str) { System.out.println("手下沒人了,我自己乾吧...總有一天我也要當CTO!!!"); } } public class Boss{ public void dispatchMission(){ Handler ctoHandler = new CTOHanlder(); Handler managerHandler = new ManageHanlder(); Handler workerHandler = new WorkerHandler(); ctoHandler.setNextHandler(managerHandler); ctoHandler.doHandler("人手足夠"); managerHandler.setNextHandler(workerHandler); managerHandler.doHandler("人手足夠"); workerHandler.doHandler("反正沒人了隨便寫!!!"); } } }