Javascriptデザインモード-17-装飾者モード


Javascript設計モード-17-装飾者モード


概要


デザイナモードは、このクラスから派生した他のオブジェクトに影響を与えることなく、オブジェクトに追加のロールを動的に追加できます.

メリット

  • 従来のオブジェクト向け言語では、オブジェクトに機能を追加するには継承方式がしばしば使用されているが、継承方式は柔軟ではなく、スーパークラスとサブクラスの間に強い結合性が存在し、スーパークラスが変化するとサブクラスページが変化するという問題も多い.一方、継承方式では、スーパークラスの内部細部がサブクラス式に可視であり、パッケージ性
  • を破壊する.
  • デコレーションモードは、オブジェクト自体を変更することなく、プログラムの実行中にオブジェクトに動的に職責を付加することができ、継承に比べてデコレーションモードは軽くて柔軟な方法であり、「即用即付」の方法である
  • である.

    装飾関数の実装

        //   Function        before   after     
        Function.prototype.before = function (beforeFn) {
         
            //         
            var _self = this;
            //              ‘    ’
            return function () {
         
                beforeFn.apply(this, arguments);
    
                //                 
                return _self.apply(this, arguments);
            }
        }
    
        //   before              
        Function.prototype.after = function (afterFn) {
         
            var _self = this;
    
            return function () {
         
                var ret = __self.apply( this, arguments ); 
    
                afterfn.apply( this, arguments ); 
                return ret;
            }
        }
    
        //   
        var ajax = function (type, url, param) {
         
            console.log('   ajax    ', param);
        }
    
        var getToken = function () {
         
            return 'Token';
        }
    
        //   
        ajax = ajax.before(function (type, url, param) {
         
            param.Token = getToken();
        });
    
        ajax('get', 'http://xxx.com', {name: 'ajax'}); //    ajax     {name: "ajax", Token: "Token"}

    装飾者モードとエージェントモード

  • エージェントモードの目的は、直接アクセスボリュームが不便であるか、または必要に合致しない場合、このボリュームは代替者を提供し、ボリュームは重要な機能を提供し、エージェントはアクセスを提供または拒否し、またはアクセス前に追加のことをする
  • である.
  • デコレーション者モード作用は、オブジェクトに動作
  • を動的に加えることである.
  • エージェントモードは、通常、エージェント本体の参照が1層しかないが、装飾者モードは、長い装飾チェーン
  • を形成することが多い.

    装飾者モードと外観モード

  • 外観モードは、一連の動作のパッケージであり、インタフェース
  • を外部に提供する.
  • デコレーションモードは、あるオブジェクトにコンテンツを付加し、追加の動作を提供する拡張機能
  • である.

    記事リスト

  • javascript設計モード–設計原則
  • JavaScript設計モード–高次関数
  • Javascript設計モード-01-プロトタイプモード
  • Javascript設計モード-02-単例モード
  • Javascript設計モード-03-コンストラクタモード
  • Javascript設計モード-04-ファクトリモード
  • Javascript設計モード-05-外観モード
  • Javascript設計モード-06-エージェントモード
  • Javascript設計モード-07-オブザーバーモード(パブリッシュサブスクリプションモード)
  • Javascript設計モード-08-ポリシーモード
  • Javascript設計モード-09-コマンドモード
  • Javascript設計モード-10-反復モード
  • Javascript設計モード-11-職責チェーンモード
  • Javascript設計モード-12-アダプタモード
  • Javascript設計モード-13-テンプレートメソッド
  • Javascript設計モード-14-組合せモード
  • Javascript設計モード-15-享元モード
  • Javascript設計モード-16-仲介者モード
  • Javascript設計モード-17-装飾者モード
  • Javascript設計モード-18-ステータスモード