まず、定義
フレームワークは、一つの動作アルゴリズムを定義し、サブクラスのいくつかのステップを遅らせる、アルゴリズム変更の特定のステップを再定義するためのアルゴリズムを変更することなく、そのようなインターフェースのサブクラス。
二、UMLダイアグラム
構造第三に、テンプレートパターン
抽象クラスからテンプレートパターンと特定の実装クラス(のセット)。
抽象クラスの三つの方法:
1、抽象メソッド:抽象クラスで定義された対応する仕様は、それに応じて、特定のカテゴリによって実現します。(典型的には、メイン論理関数抽象メソッドによって実行されます)
2、テンプレートメソッド:抽象クラスで宣言され、達成されます。一般テンプレートは、特にクラスでオーバーライドされる防ぐために、最終的なアプローチの方法として定義されます。
図3は、フックメソッド:内閣総理大臣では、クラス内で宣言し、達成するために、しかし、サブクラスは、抽象クラスのロジックに影響を与えるために、拡張フックメソッドを書き換えることができます。
抽象クラスの主な役割は、通常、経験豊富な人々によって行われ、ビジネスを構築するための論理的なフレームワークです。
第四に、例
プログラマが仕事を得るために、データ配列のセットがソートされ、印刷されます。
分析:タスクを2つの段階に分割され、ステップは別のステップは、印刷後にデータをソートすることで、データをソートすることです。テンプレートモードはこのために使用され、建築の建物を担当する建築家は、その後、早期に、中高エンジニアのロジックの複雑さに割り当てられました。
抽象クラス:AbstractSort
com.golf.moduleパッケージ; //ソートのアレイと印刷 パブリック抽象クラスAbstractSort { //抽象クラスの抽象メソッド パブリック抽象INT [] sortArray(int配列[]、int型低、高INT); / /テンプレート抽象クラスメソッド 公共ボイドプリントアレイファイナル(int配列[]){ INT []は= ARR sortArray(アレイ、0、-be Array.lengthと1。) のための(INT I = 0; I <arr.length; I ++) { のSystem.out.println(ARR [I]); } } }
特定の実装クラス:
com.golf.moduleパッケージは、 //実装クラス のパブリッククラスは、ソートを拡張AbstractSort { //使用クイックソート @Override 公共のint [] sortArray(ハイint型のint []配列、ローINT、){ IF(低>高) リターンアレイと、 左端の中間変数に格納されている//値 のint TEMP =配列[低]; intがI低が=; INT J =高; 一方(配列[J]> = TEMP && I <J){//アレイ右端のビューの開始からTEMPの値よりも小さい J ,; } アレイ[I] =配列[J]; //値が左TEMPに右よりも小さい見つける 一方(配列[I] <= TEMP && I < J){//配列の左側から見始めること、TEMPの値よりも大きい I ++; } アレイ[J] =配列[I ]; // 左に大きなに右よりも一時の値 配列[I] = TEMP; //基準値 sortArray(アレイ、低、J- 1); // 配列の左半分にコール sortArray(アレイ、J + 1、高); // 配列の右半分にコール リターンアレイ; } }
クライアント:
パッケージcom.golf.module; publicクラスクライアント{ パブリック静的無効メイン(文字列[] args){ int型ARR [] = {2,1,4,5,23,13,41,56}。 AbstractSort abstractSort =新しいソート(); abstractSort.printArray(ARR)。 } }
第五に、長所と短所
利点:
図1は、拡張が容易、それは、このように抽象メソッドによって実装される機能を拡張することができます。クローズドの原則 - オープンに合わせて。