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

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

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

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
    任鏈模式
        在責任鏈模式里,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。發(fā)出這個請求的客戶端并不知道鏈上的哪一個對象最終處理這個請求,這使系統(tǒng)可以在不影響客戶端的情況下動態(tài)的重新組織鏈和分配責任。
    責任鏈模式的組成部份
        1.抽象處理者 定義出一個處理請求的接口。如果需要,接口可以定義出一個方法,以設定和返回下家的引用。這個角色通常由一個Java抽象類或Java接口實現(xiàn)。
        2.具體處理 具體處理者接到請求后,可以選擇將請求處理掉,或者將請求傳給下家。由于處理者持有下家引用,因此,如果需要,具體處理者可以訪問下家。
    責任鏈模式組成部份之間的關系

    一個例子:
    1.抽象處理者
    package responsibility;

    public abstract class Handler
    {
        
    protected Handler nextHandler;
        
        
    public abstract void handleRequest(String name);
        
        
    public void setNextHandler(Handler handler)
        
    {
            
    this.nextHandler = handler;
        }

    }

    2.寶玉
    package responsibility;

    /**
     * <ul>
     * <li>Title:[JiaBaoYu]</li>
     * <li>Description: [賈寶玉]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-7-31]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class JiaBaoYu extends Handler
    {
        
    public void handleRequest(String name)
        
    {
            
    if("賈寶玉".equals(name))
            
    {
                System.out.println(
    "賈寶玉表演節(jié)目");
            }

            
    else
            
    {
                System.out.println(
    "賈寶玉傳把花遞給下一位");
                
    if (nextHandler != null)
                
    {
                    
    this.nextHandler.handleRequest(name);
                }

            }

        }

    }

    林黛玉:
    package responsibility;

    /**
     * <ul>
     * <li>Title:[LinDaiYu]</li>
     * <li>Description: [林戴玉]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-7-31]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class LinDaiYu  extends Handler
    {   
        
    public void handleRequest(String name)
        
    {
            
    if("林戴玉".equals(name))
            
    {
                System.out.println(
    "林戴玉表演節(jié)目");
            }

            
    else
            
    {
                System.out.println(
    "林戴玉把花傳遞給下一位");
                
    if (nextHandler != null)
                
    {
                    
    this.nextHandler.handleRequest(name);
                }

            }

        }

    }

    探春:
    package responsibility;

    /**
     * <ul>
     * <li>Title:[TanChun]</li>
     * <li>Description: [探春]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-7-31]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
    @version 1.0
     
    */

    public class TanChun extends Handler
    {
        
    public void handleRequest(String name)
        
    {
            
    if ("探春".equals(name))
            
    {
                System.out.println(
    "探春表演節(jié)目");
            }

            
    else
            
    {
                System.out.println(
    "探春把花傳遞給下一位");
                
    if (nextHandler != null)
                
    {
                    nextHandler.handleRequest(name);
                }

            }

        }

    }

    襲人:
    package responsibility;

    /**
     * <ul>
     * <li>Title:[XiRen]</li>
     * <li>Description: [襲人]</li>
     * <li>Copyright 2009 Upengs Co., Ltd.</li>
     * <li>All right reserved.</li>
     * <li>Created by [Huyvanpull] [2011-7-31]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
    @version 1.0  
     
    */

    public class XiRen extends Handler
    {   
        
    public void handleRequest(String name)
        
    {
            
    if("襲人".equals(name))
            
    {
                System.out.println(
    "襲人表演節(jié)目");
            }

            
    else
            
    {
                System.out.println(
    "襲人把花傳遞給下一位");
                
    if (nextHandler != null)
                
    {
                    
    this.nextHandler.handleRequest(name);
                }

            }

        }

    }



    環(huán)境:
    package responsibility;

    public class Client
    {
        
    public static void main(String[] args)
        
    {
            
    // 賈寶玉
            Handler jiabaoyu = new JiaBaoYu();
            
    // 林黛玉
            Handler lindaiyu = new LinDaiYu();
            
    // 襲人
            Handler xiren = new XiRen();
            
    // 探春
            Handler tanchun = new TanChun();
            
            jiabaoyu.setNextHandler(lindaiyu);
            lindaiyu.setNextHandler(xiren);
            xiren.setNextHandler(tanchun);
            
            jiabaoyu.handleRequest(
    "賈寶玉");
        }

    }



    純的與不純的責任鏈
    在一個純的責任鏈模式里面,一個請求必須被某一個處理者對象所接收;在一個不純的責任鏈模式里面,一個請求可以最終不被任何接收端對象所接收。

    責任鏈模式的優(yōu)點

           責任鏈模式非常顯著的優(yōu)點是請求和處理分開。請求者可以不用知道是誰處理的,處理者可以不用知道請求的全貌(例如在J2EE項目開發(fā)中,可以剝離出無狀態(tài)Bean由責任鏈處理),兩者解耦,提高系統(tǒng)的靈活性。

    責任鏈模式的缺點

           責任鏈有兩個非常顯著的缺點:一是性能問題,每個請求都是從鏈頭遍歷到鏈尾,特別是在鏈比較長的時候,性能是一個非常大的問題。二是調(diào)試不是很方便,特別是鏈條比較長,環(huán)節(jié)比較多的時候,由于采用了類似遞歸的方式,調(diào)試的時候邏輯可能比較復雜。



    posted on 2011-08-01 00:04 HUIKK 閱讀(372) 評論(0)  編輯  收藏 所屬分類: Design Patterns
    主站蜘蛛池模板: 国精产品一区一区三区免费视频| 亚洲人成人伊人成综合网无码| 99精品免费观看| 亚洲免费综合色在线视频| 黑人大战亚洲人精品一区| 亚洲精品欧洲精品| 日韩亚洲AV无码一区二区不卡| 亚洲av无码乱码国产精品fc2| 中文字幕免费在线| h片在线观看免费| 欧美亚洲国产SUV| 亚洲综合无码无在线观看| 色噜噜综合亚洲av中文无码| 国产亚洲人成网站在线观看不卡| 国产免费AV片无码永久免费| 黄色成人网站免费无码av| 99久久精品免费精品国产| a级成人免费毛片完整版| 污污的视频在线免费观看| 国产AV日韩A∨亚洲AV电影| 亚洲第一成年免费网站| 亚洲精品久久久久无码AV片软件| 亚洲色精品VR一区区三区| 国产成人精品日本亚洲网址| 456亚洲人成影院在线观| 日韩亚洲人成在线| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲色偷偷偷综合网| 国产人成亚洲第一网站在线播放| 亚洲精品无码专区| 无遮挡a级毛片免费看| 亚洲精品黄色视频在线观看免费资源| 人成电影网在线观看免费| 大妹子影视剧在线观看全集免费| 中文字幕无码免费久久| 131美女爱做免费毛片| 韩国日本好看电影免费看| 亚洲人成无码网WWW| 亚洲综合在线视频| 亚洲国产无线乱码在线观看| 一区二区三区免费在线视频|