ディレクトリ
Template Methodパターンは、行動パターンを属します。意図テンプレートメソッドパターンは方法のアルゴリズムで実装され、他のクラスがそれらを再定義するように、アルゴリズムで定義されたステップのいくつかを延期されます。
例
多くの場合、プロジェクトのターゲットRedisTemplateで使用される、restTemplate、JdbcTemplateが好きです。動作中、プロセスは、一般的な接続、リソースを開くことを含む場合、リソースので、接続を閉じます。しかし、これらのステップは、アルゴリズムに特定の操作や各種リソースサブクラス方法を定義するためのスケルトンを定義するので、開発者は、抽象テンプレートは非常に汎用性があります。
抽象テンプレートクラス
/**
* 数据源操作模版
* @author: xujian
* @Date: 2019-09-26
* @Description:
*/
public abstract class AbstractDataSourceTemplate {
/**
* 开启连接
*/
abstract void open();
/**
* 执行操作
*/
abstract void execute();
/**
* 关闭连接
*/
abstract void close();
/**
* 模版方法
*/
public final void run() {
open();
execute();
close();
}
}
Redisの運用実装クラス
public class RedisDataSourceTemplate extends AbstractDataSourceTemplate {
/**
* 开启连接
*/
@Override
void open() {
System.out.println("开启redis连接...");
}
/**
* 执行操作
*/
@Override
void execute() {
System.out.println("操作redis...");
}
/**
* 关闭连接
*/
@Override
void close() {
System.out.println("关闭redis连接...");
}
}
JDBCの運用実装クラス
public class JdbcDataSourceTemplate extends AbstractDataSourceTemplate {
/**
* 开启连接
*/
@Override
void open() {
System.out.println("开启jdbc连接...");
}
/**
* 执行操作
*/
@Override
void execute() {
System.out.println("操作jdbc...");
}
/**
* 关闭连接
*/
@Override
void close() {
System.out.println("关闭jdbc连接...");
}
}
使用
//jdbc模版
AbstractDataSourceTemplate template = new JdbcDataSourceTemplate();
template.run();
System.out.println("----------------");
//redis模版
AbstractDataSourceTemplate template1 = new RedisDataSourceTemplate();
template1.run();
开启jdbc连接...
操作jdbc...
关闭jdbc连接...
----------------
开启redis连接...
操作redis...
关闭redis连接...
概要
- パッケージ不変部分、変数延長部
- 維持しやすい共通のコードの抽出、
- スケルトン/アルゴリズムの動作は、親クラスによって制御され、サブクラスを達成します
- 異なる実装のそれぞれについて、私たちはクラスの数を増やすことになり、サブクラス、はるかに大きいシステムだけでなく、より抽象的なデザインを定義する必要があります
- 抽象親クラスは、サブクラスによって実装され、実行結果は逆方向制御構造をもたらす親クラスの結果に影響を与えるサブクラス、それはコードを読み取ることの難しさを増加させます
あなたはここに関連するコードを取得することができます。デザインモード-Template_Methodモード