Latest web development tutorials

テンプレートモード

テンプレートモード(テンプレートパターン)、それは方法/テンプレートを開示して実行する方法を定義する抽象クラスで。 そのサブクラスは、メソッドをオーバーライドする必要が達成することができますが、抽象クラスが定義されると呼ばれています。 デザインパターンのこのタイプは、行動パターンに属します。

入門

意図:サブクラスにいくつかのステップを延期しながら、スケルトン動作アルゴリズムを定義します。テンプレートメソッドを再定義することができ、アルゴリズムの特定のステップの構造を変更することなく、アルゴリズムのサブクラスをすることができます。

主なソリューション:いくつかの一般的な方法が、各サブクラスでこのアプローチを再書き込み。

使用するときは:いくつかの一般的な方法があります

解決方法:抽象化し、これらの一般的なアルゴリズム。

キーコード:抽象クラスは、サブクラスの実装の他のステップを実装しています。

応用例:1、時建てた家で、ファンデーション、配線、水道管が同じである、唯一の建物の後半にクローゼットプラスプラスフェンス違いがあります。2、西遊記が困難な81の内側に良い仏を設定し、これはトップレベルの論理的なフレームワークです。 3は、Spirng Hibernateのサポートでは、いくつかはすでに、このような書き込み良いコードの規範、企業が保存することができ、直接スローを繰り返していないセッション、クローズセッションを取得するオープン・トランザクション、および他のプログラマとして、カプセル化するための良い方法を与えています。

利点:1、同じパッケージの一部は、可変部分を拡張しました。2、メンテナンスが容易、共通のコードを抽出します。 図3に示すように、動作は、親クラス、サブクラス実装によって制御されます。

短所:異なる実装の各システムは、より実質的な製造、クラスの数が増大する、達成するサブクラスを必要とします。

使用シナリオ:1、複数のサブクラスの一般的な方法、および同じ論理。2、重要な、複雑な方法は、テンプレートメソッドと考えることができます。

注意:悪質な行為を防ぐために、一般的なテンプレートメソッドと相まって、最終キーワードです。

実現

テンプレートメソッドが最終的に設定されている私たちは、カスタムアクションゲーム抽象クラスを作成しますので、それは上書きされません。クリケットサッカーゲームは、抽象クラスをオーバーライドするエンティティ・クラスの拡張です。

TemplatePatternDemoは、我々は、テンプレートパターンの使用を実証するためにゲームクラスの使用を示します。

テンプレートパターンUMLダイアグラム

ステップ1

抽象クラスを作成し、そのテンプレートメソッドは、最終的に設定されています。

Game.java

パブリック抽象クラスのゲーム{
   抽象的なボイドのinitialize();
   抽象ボイドstartPlay();
   抽象ボイドエンドプレイ();

   //テンプレートの公開最終ボイドプレイ(){

      //)(ゲーム初期化を初期化します。

      //ゲームstartPlay()を起動します。

      //エンドゲームエンドプレイ();
   }
}

ステップ2

クラスの上のエンティティクラスを拡張作成します。

Cricket.java

パブリッククラスクリケットは{ゲームを拡張します

   @Override
   ボイドエンドプレイ(){
      System.out.println( "完成したクリケットのゲーム!");
   }

   @Override
   ボイドのinitialize(){
      System.out.println( "!クリケットゲーム初期化スタートが演奏します。");
   }

   @Override
   ボイドstartPlay(){
      System.out.println( "クリケットのゲームは、ゲームをお楽しみください開始。!");
   }
}

Football.java

パブリッククラスサッカーは{ゲームを拡張します

   @Override
   ボイドエンドプレイ(){
      System.out.println( "サッカーゲームは終了しました!");
   }

   @Override
   ボイドのinitialize(){
      System.out.println( "!サッカーゲーム初期化スタートが演奏します。");
   }

   @Override
   ボイドstartPlay(){
      System.out.println( "サッカーゲームは、ゲームをお楽しみください開始。!");
   }
}

ステップ3

ゲームを実証するために、テンプレートメソッドプレイを()を使用してゲームが定義されています。

TemplatePatternDemo.java

パブリッククラスTemplatePatternDemo {
   公共の静的な無効メイン(文字列[] args){

      ゲームゲーム=新しいクリケット();
      game.play()。
      System.out.println();
      ゲーム=新しいフットボール();
      game.play()。		
   }
}

ステップ4

出力を確認します。

クリケットゲーム初期化!再生を開始します。
クリケットゲームが開始。ゲームをお楽しみください!
クリケットゲームは終了しました!

サッカーゲーム初期化!再生を開始します。
サッカーゲームが開始。ゲームをお楽しみください!
サッカーゲームは終了しました!