package demo;
/**
* 二.模板模式
* 兩種角色:
* 1.抽象模板
* 1.抽象方法 :需要子類去實現,子類必須實現
* 2.回調方法:擴展方法,是一個空方法,子類可以重寫,也可以不重寫
* 3.私有的最終方法 :不可重寫
* 4.模板方法:這個方法中定義了每一個方法的執行順序和邏輯
* 2.具體
* 需要實現抽象模板中的抽象方法
*
*
*/
abstract class ConcreteTemplate {
/**
* 模板方法
*/
public void templateMethod(){
//调用基本方法
abstractMethod();
hookMethod();
concreteMethod();
}
/**
* 基本方法的声明(由子类实现)
*/
protected abstract void abstractMethod();
/**
* 基本方法(空方法)
*/
protected void hookMethod(){}
/**
* 基本方法(已经实现)
*/
private final void concreteMethod(){
//业务相关的代码
}
}
public class ConcreteTemplate extends ConcreteTemplate{
//基本方法的实现
@Override
public void abstractMethod() {
//业务相关的代码
}
//重写父类的方法
@Override
public void hookMethod() {
//业务相关的代码
}
}
/**
* 二.模板模式
* 兩種角色:
* 1.抽象模板
* 1.抽象方法 :需要子類去實現,子類必須實現
* 2.回調方法:擴展方法,是一個空方法,子類可以重寫,也可以不重寫
* 3.私有的最終方法 :不可重寫
* 4.模板方法:這個方法中定義了每一個方法的執行順序和邏輯
* 2.具體
* 需要實現抽象模板中的抽象方法
*
*
*/
abstract class ConcreteTemplate {
/**
* 模板方法
*/
public void templateMethod(){
//调用基本方法
abstractMethod();
hookMethod();
concreteMethod();
}
/**
* 基本方法的声明(由子类实现)
*/
protected abstract void abstractMethod();
/**
* 基本方法(空方法)
*/
protected void hookMethod(){}
/**
* 基本方法(已经实现)
*/
private final void concreteMethod(){
//业务相关的代码
}
}
public class ConcreteTemplate extends ConcreteTemplate{
//基本方法的实现
@Override
public void abstractMethod() {
//业务相关的代码
}
//重写父类的方法
@Override
public void hookMethod() {
//业务相关的代码
}
}