在模板模式中,父抽象類(lèi)公開(kāi)幾個(gè)抽象方法供子類(lèi)實(shí)現(xiàn)。在父抽象類(lèi)中有另一個(gè)方法或幾個(gè)方法使用抽象方法來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。
抽象方法通常用于父類(lèi)所需的每個(gè)步驟。
例如,為了使用新的軟件,我們需要下載,安裝,配置和運(yùn)行。如果我們要使用模板模式來(lái)編碼邏輯,我們將創(chuàng)建一個(gè)父類(lèi)如下。
abstract class UseSoftware{ abstract void download(); abstract void install(); abstract void configuration(); abstract void run(); public void useNewSoftware(){ download(); install(); configuration(); run(); } }
對(duì)于使用不同的軟件,我們只需要從上面的抽象類(lèi)繼承并提供詳細(xì)的實(shí)現(xiàn)。
模板模式是一種行為模式。
abstract class Software { abstract void initialize(); abstract void start(); abstract void end(); //template method public final void play(){ //initialize initialize(); //start start(); //end end(); } } class Browser extends Software { @Override void end() { System.out.println("Browser Finished!"); } @Override void initialize() { System.out.println("Browser Initialized!."); } @Override void start() { System.out.println("Browser Started."); } } class Editor extends Software { @Override void end() { System.out.println("Editor Finished!"); } @Override void initialize() { System.out.println("Editor Initialized!"); } @Override void start() { System.out.println("Editor Started!"); } } public class Main { public static void main(String[] args) { Software s1 = new Browser(); s1.play(); s1 = new Editor(); s1.play(); } }
上面的代碼生成以下結(jié)果。
更多建議: