您好,登錄后才能下訂單哦!
模板方法模式(Template Method Pattern)是一種行為設計模式,它在一個方法中定義了一個算法的骨架,允許子類在不改變算法結構的情況下,重新定義某些步驟的具體實現。這樣可以使得子類可以復用父類的算法結構,同時保持代碼的可擴展性和可維護性。
以下是一個使用模板方法模式統一Java操作流程的示例:
public abstract class AbstractClass {
// 模板方法
public final void templateMethod() {
baseOperation1();
requiredOperations1();
baseOperation2();
hook1();
requiredOperations2();
baseOperation3();
hook2();
requiredOperations3();
}
// 基本操作,由抽象類實現
public void baseOperation1() {
System.out.println("AbstractClass baseOperation1");
}
public void baseOperation2() {
System.out.println("AbstractClass baseOperation2");
}
public void baseOperation3() {
System.out.println("AbstractClass baseOperation3");
}
// 抽象方法,由子類實現
public abstract void requiredOperations1();
public abstract void requiredOperations2();
public abstract void requiredOperations3();
// 鉤子操作,由子類選擇實現或不實現
public void hook1() {
}
public void hook2() {
}
}
public class SubClass1 extends AbstractClass {
@Override
public void requiredOperations1() {
System.out.println("SubClass1 requiredOperations1");
}
@Override
public void requiredOperations2() {
System.out.println("SubClass1 requiredOperations2");
}
@Override
public void requiredOperations3() {
System.out.println("SubClass1 requiredOperations3");
}
@Override
public void hook1() {
System.out.println("SubClass1 hook1");
}
}
public class SubClass2 extends AbstractClass {
@Override
public void requiredOperations1() {
System.out.println("SubClass2 requiredOperations1");
}
@Override
public void requiredOperations2() {
System.out.println("SubClass2 requiredOperations2");
}
@Override
public void requiredOperations3() {
System.out.println("SubClass2 requiredOperations3");
}
@Override
public void hook2() {
System.out.println("SubClass2 hook2");
}
}
public class Client {
public static void main(String[] args) {
AbstractClass subClass1 = new SubClass1();
AbstractClass subClass2 = new SubClass2();
System.out.println("調用 SubClass1 的模板方法:");
subClass1.templateMethod();
System.out.println("\n調用 SubClass2 的模板方法:");
subClass2.templateMethod();
}
}
運行客戶端(Client)代碼,輸出結果如下:
調用 SubClass1 的模板方法:
AbstractClass baseOperation1
SubClass1 requiredOperations1
SubClass1 requiredOperations2
SubClass1 hook1
SubClass1 requiredOperations3
AbstractClass baseOperation2
AbstractClass baseOperation3
調用 SubClass2 的模板方法:
AbstractClass baseOperation1
SubClass2 requiredOperations1
SubClass2 requiredOperations2
SubClass2 hook2
SubClass2 requiredOperations3
AbstractClass baseOperation2
AbstractClass baseOperation3
通過模板方法模式,我們可以將Java操作流程中的公共部分抽象為模板方法,子類可以根據需要實現或覆蓋特定的步驟。這樣可以實現代碼的復用和擴展,同時保持代碼的可維護性。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。