JavaScriptのデザインパターンのサンプル19 - デューティチェーン。

デューティチェーン(Chain of Responsibilityパターン)

定義:リクエストに受信者オブジェクトのチェーンを作成します。
目的:送信側と受信側を要求回避は複数のオブジェクトは、これらのオブジェクトは鎖を形成するための接続要求を受信する可能性があるように、一緒に結合され、要求はこれまでオブジェクトハンドルまで鎖に沿って伝送されます。
シーン:紅楼夢「過ごすためのパスを太鼓。」
//采购请求
せPurchaseRequest =(量、商品名)=> { 
    this.amount =量
    this.productName =商品名
} 

//处理方
せ承認=(名前、nextApprover)=> { 
    this.name =名
    this.nextApprover = nextApprover 
} 

Approver.prototype.processRequest =()=> { 
    新しいエラーを投げる()
} 

// ConcreteHandlerは
マネージャー=(名前、nextApproverは)=> {せ
    Approver.callは(この、名前、nextApprover)
} 
(マネージャー、承認者)を拡張します
Manager.prototype.processRequest =(リクエスト)=> { 
    IF(request.Amount <10000.0){ 
        にconsole.log( 'OK')
    }他(NextApprover!= NULL){もし
        this.nextApprover.ProcessRequest(リクエスト)
    } 
} 


// ConcreteHandler、副总
VicePresident =関数(名前、nextApprover){ましょう
    Approver.call(この、名前、nextApproverが)
} 
拡張(VicePresident 、承認者)
VicePresident.prototype.processRequest =関数(リクエスト){ 
    IF(request.Amount <25000.0){ 
        にconsole.log( 'OK'); 
    }他(NextApprover!= NULL){もし
        this.nextApprover.ProcessRequest(リクエスト)
    } 
} 


// ConcreteHandler、总经理
社長=関数(名前、nextApprover){ましょう
    Approver.call(この、名前、nextApproverを)
}
延長(代表取締役社長、承認者)PRES = NextApprover 
//処理要求
President.prototype.processRequest =機能(リクエスト){ 
    場合(request.Amount <100000.0){ 
        はconsole.log( 'OK')
    }(NextApprover!= NULL){それ以外の場合
        this.nextApprover.ProcessRequest(リクエスト)
    } 
} 


requestTelphoneをしましょう=新しいPurchaseRequest(4000.0、 "Telphone")
させrequestSoftware =新しいPurchaseRequest(10000.0、 "Visual Studioの")
requestComputersは=新しいPurchaseRequest(40000.0、 "コンピュータ")させ

マネージャー=新しいマネージャー( "LearningHard")させ
てみましょうVpを=新しいVicePresident ( "トニー")
前=新社長( "BossTom")しましょう

//设置责任链
manager.NextApprover = Vpの
Vp.NextApprover =事前

manager.ProcessRequest(requestTelphone)
manager.ProcessRequest(requestSoftware)
manager.ProcessRequest(requestComputers)

Gitの住所:https://github.com/skillnull/Design-Mode-Example

おすすめ

転載: www.cnblogs.com/Man-Dream-Necessary/p/12567684.html