日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第十九讲:职责链模式

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第十九讲:职责链模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


?

public class CarBodyHandler extends CarHandler{@Overridepublic void HandlerCar() {// TODO Auto-generated method stubSystem.out.println("組裝車身");}} public abstract class CarHandler {public abstract void HandlerCar(); } public class CarHeadHandler extends CarHandler{@Overridepublic void HandlerCar() {// TODO Auto-generated method stubSystem.out.println("組裝車頭");}} public class CarTailHandler extends CarHandler{@Overridepublic void HandlerCar() {// TODO Auto-generated method stubSystem.out.println("組裝車尾.");}} public class MainClass {public static void main(String[] args) {CarHandler headH = new CarHeadHandler();CarHandler bodyH = new CarBodyHandler();CarHandler tailH = new CarTailHandler();//這種方式的缺點是客戶端必須手動地調用HandlerCar()//像SERVLET的容器的過濾器的框架的實現是自動的.//就是組裝完車頭之后你自己組裝車身,組裝車尾.//我把一個流程給你以后:是先組裝車頭還是先組裝車身.你按照我給定的流程你來執行.//對象的組織-消息的傳遞-職責的分配-任務的完成 headH.HandlerCar();bodyH.HandlerCar();tailH.HandlerCar();} }

這是非責任鏈模式的代碼.組裝一輛汽車的應用場景.


?

ConcreteHandler:CarHeadHandler.java、CarTailHandler.java、CarBodyHandler.java

Handler:CarHandler.java ?Hander有一條線是對自身的引用.

車頭持有車身的引用,車身持有車尾的引用.每次執行完自己的方法的時候調用下一個節點的方法繼續執行.


?

缺點:因為一個對象總是要調用鏈的下一個對象進行處理,如果中間有一個對象或者是實現出現了問題就會影響處理速度.


?

package com.ibeifeng.ex2;public class CarBodyHandler extends CarHandler{@Overridepublic void HandlerCar() {// TODO Auto-generated method stubSystem.out.println("組裝車身");if(this.carHandler!=null){this.carHandler.HandlerCar();}}} package com.ibeifeng.ex2;public class CarHeadHandler extends CarHandler{@Overridepublic void HandlerCar() {// TODO Auto-generated method stubSystem.out.println("組裝車頭");if(this.carHandler!=null){this.carHandler.HandlerCar();}}} package com.ibeifeng.ex2;public class CarTailHandler extends CarHandler{@Overridepublic void HandlerCar() {// TODO Auto-generated method stubSystem.out.println("組裝車尾.");if(this.carHandler!=null){this.carHandler.HandlerCar();}}} package com.ibeifeng.ex2;public abstract class CarHandler {protected CarHandler carHandler;//protected屬性子類可以訪問...//private CarHandler carHandler;//持有自身的引用./* public void setNextHandler(CarHandler carHandler){this.carHandler = carHandler;}*/public CarHandler setNextHandler(CarHandler carHandler){this.carHandler = carHandler;return this.carHandler;}public abstract void HandlerCar(); } package com.ibeifeng.ex2;public class MainClass {public static void main(String[] args) {CarHandler headH = new CarHeadHandler();CarHandler bodyH = new CarBodyHandler();CarHandler tailH = new CarTailHandler();//這種方式的缺點是客戶端必須手動地調用HandlerCar()//像SERVLET的容器的過濾器的框架的實現是自動的.//就是組裝完車頭之后你自己組裝車身,組裝車尾.//我把一個流程給你以后:是先組裝車頭還是先組裝車身.你按照我給定的流程你來執行.//對象的組織-消息的傳遞-職責的分配-任務的完成 /* headH.HandlerCar();bodyH.HandlerCar();tailH.HandlerCar();*///不需要調用三個類的方法了,而是把順序預先設定好.//組裝順序預先設定好,順序是車頭->車身->車尾headH.setNextHandler(bodyH);//把第二個設置到第一個里面 bodyH.setNextHandler(tailH);//調用職責鏈的鏈頭來完成操作 headH.HandlerCar();System.out.println("------------------------------");//順序改變,希望是車身->車頭->車尾 bodyH.setNextHandler(headH);headH.setNextHandler(tailH);bodyH.HandlerCar();System.out.println("--------------------------------------");//簡便操作 bodyH.setNextHandler(headH).setNextHandler(tailH);bodyH.HandlerCar();} }

?

轉載于:https://www.cnblogs.com/ZHONGZHENHUA/p/6746879.html

總結

以上是生活随笔為你收集整理的第十九讲:职责链模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。