<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java學習

    java學習

     

    設計模式之職責鏈模式

    職責鏈模式規定了一個請求,這個請求需要特定的對象去處理,當把這個請求交個一個對象,但是這個對象不負責處理這個請求,可以動態地交給其他對象處理,直到交給對的對象處理,這些對象都有處理請求的機會,只有當請求是該自己負責的時候才處理,否則交給其他對象。

    下面以==============

    要離職, 人事審批!

    請求完畢

    ===========

    要加薪, 項目經理審批!

    ========

    要請假, 項目組長審批!

    的規定,寫一個職責鏈模式的例子:

    這是所有請求的接口

    public interface Request {

    void getRequest();

    }

    請假的請求實現類

    public class LeaveRequest implements Request{

    @Override

    public void getRequest() {

    System.out.println("leave");

    }

    }

    離職的請求實現類

    public class DimissionRequest implements Request{

    @Override

    public void getRequest() {

    System.out.println("dimission");

    }

    }

    加薪的請求實現類

    public class AddMoneyRequest implements Request{

    @Override

    public void getRequest() {

    System.out.println("add money");

    }

    }

    處理請求的接口

    public interface RequestHandle {

    void handleRequest(Request request);

    }

    Hr處理離職的請求

    public class HRRequestHandle implements RequestHandle{

    public void handleRequest(Request request) {

            if (request instanceof DimissionRequest) {

                System.out.println("要離職, 人事審批!");

            } 

            System.out.println("請求完畢");

        }

    }

    組長處理請假的請求

    public class TLRequestHandle implements RequestHandle{

    RequestHandle rh;

        

        public TLRequestHandle(RequestHandle rh) {

            this.rh = rh;

        }

        public void handleRequest(Request request) {

            if (request instanceof LeaveRequest) {

                System.out.println("要請假, 項目組長審批!");

            } else {

                rh.handleRequest(request);

            }

        }

    }

    經理處理加薪的請求

    public class PMRequestHandle implements RequestHandle{

    RequestHandle rh;

    public PMRequestHandle(RequestHandle rh) {

        this.rh = rh;

    }

    public void handleRequest(Request request) {

        if (request instanceof AddMoneyRequest) {

            System.out.println("要加薪, 項目經理審批!");

        } else {

            rh.handleRequest(request);

        }

    }

    }

    測試類

    public class Test {

    public static void main(String[] args) {

    //先把所有的處理請求的對象組成職責鏈

            RequestHandle hr = new HRRequestHandle();

            RequestHandle tl = new TLRequestHandle(hr);//組長

            RequestHandle pm = new PMRequestHandle(tl);//經理

          

            Request dimissionRequest = new DimissionRequest();

            Request addMoneyRequest = new AddMoneyRequest();

            Request  leaveRequest = new LeaveRequest();

            System.out.println("==============");

            //人事處理離職請求

            

            pm.handleRequest(dimissionRequest);

            

            System.out.println("===========");

            //經理處理加薪請求

          

            pm.handleRequest(addMoneyRequest);

            

            System.out.println("========");

            //項目組長處理請假請求

           

            pm.handleRequest(leaveRequest);

        }

    }



    在使用時要調用最高級的職責調用者,由他去負責往下分配職責

    posted on 2013-04-17 14:29 楊軍威 閱讀(181) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一日本道a高清免费播放| 91大神免费观看| 亚洲av无码成h人动漫无遮挡 | 久久精品亚洲视频| 最新中文字幕免费视频| 一级一黄在线观看视频免费| 亚洲AV无码久久精品狠狠爱浪潮| 色窝窝免费一区二区三区| 男男gvh肉在线观看免费| 亚洲日本一区二区| 免费国产成人午夜电影| 99久久免费精品视频| 爱情岛论坛免费视频| 亚洲精品视频专区| 亚洲精品国产va在线观看蜜芽| 182tv免费观看在线视频| 青青久久精品国产免费看| 亚洲成a人片在线观看播放| 久久久精品国产亚洲成人满18免费网站| 中国人xxxxx69免费视频| 九一在线完整视频免费观看| 亚洲制服丝袜一区二区三区| 亚洲精品无码不卡在线播放HE| 成人黄动漫画免费网站视频| 久久久久久影院久久久久免费精品国产小说 | 国产成人精品免费直播| 57pao国产成永久免费视频| 国产成人久久精品亚洲小说| 亚洲毛片在线免费观看| 中文字幕久久亚洲一区| 国产精品免费_区二区三区观看| 99re这里有免费视频精品| xxxx日本在线播放免费不卡| 亚洲男同gay片| 亚洲欧洲国产经精品香蕉网| 亚洲精品成人片在线播放| 亚洲国产成人精品女人久久久 | a级毛片在线免费观看| 免费国产黄网站在线观看动图 | 成人免费777777被爆出| 老司机午夜性生免费福利|