JAvascript設計モード–テンプレートメソッドモードの原理と使用例の分析

2919 ワード

この例ではjavascript設計モード–テンプレートメソッドモードの原理と使い方について説明します.皆さんの参考にしてください.具体的には以下の通りです.
紹介:テンプレートメソッドモードは、構造の最も簡単な動作型設計モードであり、その構造には親と子の間の継承関係しか存在しません.テンプレートメソッドモードを使用すると、いくつかの複雑なプロセスの実装手順を一連の基本メソッドにカプセル化できます.
定義:操作中のアルゴリズムのフレームワークを定義し、いくつかのステップをサブクラスに遅延します.テンプレートメソッドにより、サブクラスはアルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義できます.テンプレート法は行動型モードである.
シーン:異なるゲームを実行するためのゲーム機を設計しました.
例:

var Game = function(){
  this.play = function(){
    this.initialize();
    this.startPlay();
    this.endPlay();
    this.uninstall();
  }
  this.uninstall = function(){
    console.log('uninstall Game')
  }
}
 
var CrossFire = function(){
  this.initialize = function(){
    console.log('CrossFire initialize')
  }
  this.startPlay = function(){
    console.log('CrossFire startPlay')
  }
  this.endPlay = function(){
    console.log('CrossFire endPlay')
  }
}
CrossFire.prototype = new Game();
 
var LeagueofLegends = function(){
  this.initialize = function(){
    console.log('LeagueofLegends initialize')
  }
  this.startPlay = function(){
    console.log('LeagueofLegends startPlay')
  }
  this.endPlay = function(){
    console.log('LeagueofLegends endPlay')
  }
}
LeagueofLegends.prototype = new Game();
 
 
var cf = new CrossFire();
cf.play();
// CrossFire initialize
// CrossFire startPlay
// CrossFire endPlay
// uninstall Game
var lol = new LeagueofLegends();
lol.play();
// LeagueofLegends initialize
// LeagueofLegends startPlay
// LeagueofLegends endPlay
// uninstall Game


この例ではGameを抽象クラスと呼び,抽象クラス内部にテンプレートメソッドplayを定義し,playの内部にアルゴリズムのアーキテクチャを定義し,アルゴリズムの実行順序は,サブクラスがステップを補完してからテンプレートメソッドを実行する.LeagueofLegends,CrossFireの2つのクラスはサブクラスと呼ばれ,Gameから継承され,テンプレートメソッドを実装するステップである.Initialize,startPlay,endPlay,uninstallは、各ステップを具体的に実現するための基本的な方法と呼ばれる
テンプレートメソッドパターンのまとめ:
利点:*テンプレートメソッドモードは、共通の動作を親クラスに配置し、その子クラスによって異なる動作を実現するコード多重化技術であり、継承を適切に使用してコード多重化を実現することを奨励しています.*テンプレートメソッドは、親をサブクラスで上書きする方法によって、ステップが実行されるかどうかを決定する逆制御構造を実現します.
欠点:*各基本メソッドの異なる実装にサブクラスを提供する必要があります.親クラスに可変の基本メソッドが多すぎると、クラスの個数が増加し、システムがより膨大になります.
適用シーン:*いくつかの複雑なアルゴリズムを分割し、その中で固定された不変のブフォンをテンプレート方法と親クラスの基本方法として設計し、変更の詳細はサブクラスによって実現される.*各サブクラスの共通の動作は、コードの多重化を容易にするために、抽出され、セット内に親クラスが1つ含まれるべきである.*子クラスは、親クラスのステップが実行されるかどうかを決定し、親クラスに対する子クラスの逆制御を実現する必要があります.
興味のある方は、オンラインHTML/CSS/JavaScriptコードを使用してツールを実行できます.http://tools.jb51.net/code/HtmlJsRun上記のコードの実行効果をテストします.
JavaScriptに関する詳細について興味のある読者は、「javascriptオブジェクト向け入門チュートリアル」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズムテクニックのまとめ」、「JavaScript遍歴アルゴリズムとテクニックのまとめ」、「JavaScript数学演算の使い方のまとめ」を参照してください.
JavaScriptプログラムの設計に役立つことを願っています.