テンプレートモード
テンプレートモード(テンプレートパターン)、それは方法/テンプレートを開示して実行する方法を定義する抽象クラスで。 そのサブクラスは、メソッドをオーバーライドする必要が達成することができますが、抽象クラスが定義されると呼ばれています。 デザインパターンのこのタイプは、行動パターンに属します。
入門
意図:サブクラスにいくつかのステップを延期しながら、スケルトン動作アルゴリズムを定義します。テンプレートメソッドを再定義することができ、アルゴリズムの特定のステップの構造を変更することなく、アルゴリズムのサブクラスをすることができます。
主なソリューション:いくつかの一般的な方法が、各サブクラスでこのアプローチを再書き込み。
使用するときは:いくつかの一般的な方法があります。
解決方法:抽象化し、これらの一般的なアルゴリズム。
キーコード:抽象クラスは、サブクラスの実装の他のステップを実装しています。
応用例:1、時建てた家で、ファンデーション、配線、水道管が同じである、唯一の建物の後半にクローゼットプラスプラスフェンス違いがあります。2、西遊記が困難な81の内側に良い仏を設定し、これはトップレベルの論理的なフレームワークです。 3は、Spirng Hibernateのサポートでは、いくつかはすでに、このような書き込み良いコードの規範、企業が保存することができ、直接スローを繰り返していないセッション、クローズセッションを取得するオープン・トランザクション、および他のプログラマとして、カプセル化するための良い方法を与えています。
利点:1、同じパッケージの一部は、可変部分を拡張しました。2、メンテナンスが容易、共通のコードを抽出します。 図3に示すように、動作は、親クラス、サブクラス実装によって制御されます。
短所:異なる実装の各システムは、より実質的な製造、クラスの数が増大する、達成するサブクラスを必要とします。
使用シナリオ:1、複数のサブクラスの一般的な方法、および同じ論理。2、重要な、複雑な方法は、テンプレートメソッドと考えることができます。
注意:悪質な行為を防ぐために、一般的なテンプレートメソッドと相まって、最終キーワードです。
実現
テンプレートメソッドが最終的に設定されている私たちは、カスタムアクションゲーム抽象クラスを作成しますので、それは上書きされません。クリケットやサッカーゲームは、抽象クラスをオーバーライドするエンティティ・クラスの拡張です。
TemplatePatternDemoは、我々は、テンプレートパターンの使用を実証するためにゲームクラスの使用を示します。
ステップ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
出力を確認します。
クリケットゲーム初期化!再生を開始します。 クリケットゲームが開始。ゲームをお楽しみください! クリケットゲームは終了しました! サッカーゲーム初期化!再生を開始します。 サッカーゲームが開始。ゲームをお楽しみください! サッカーゲームは終了しました!