Java模板方法模式是基于繼承的一種設計模式。在該模式中,定義一個模板方法,該方法在其中定義了算法的骨架,但留下了一些步驟需要延遲到子類中實現。這些步驟被定位為“鉤子方法”。
public abstract class AbstractClass { public void templateMethod(){ operation1(); operation2(); operation3(); hookMethod(); } public void operation1(){ System.out.println("abstract class operation1"); } public abstract void operation2(); public abstract void operation3(); public void hookMethod(){} } public class ConcreteClass extends AbstractClass{ public void operation2(){ System.out.println("concrete class operation2"); } public void operation3(){ System.out.println("concrete class operation3"); } }
在這個例子中,AbstractClass是一個抽象類,它定義了一個模板方法templateMethod,該方法包含了algorithm算法的骨架,以及需要在子類中實現的operation2和operation3兩個抽象方法。hookMethod是一個默認空實現,可以由子類覆蓋。
ConcreteClass繼承自AbstractClass,它實現了operation2和operation3這兩個抽象方法。它也可以選擇重寫hookMethod方法。
在實際應用中,模板方法模式常用于以下情況:
- 當多個類實現相同的算法時,它們可以封裝這些算法,使得它們可以在一起工作。
- 當有一些共同的方法需要在不同的類中實現時,這些方法可以被抽象為一個模板方法。
繼承是Java實現模板方法模式的一個重要手段,它使得相似的實現可以被放在一個抽象類中,從而使得代碼更加易于維護和擴展,同時還可以實現代碼的復用。