設計模式之模版方法模式

模版方法模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中具體實現細節,模版方法使得子類可以

不改變一個算法的結構即可重定義該算法的某些特定步驟。

1.模版方法將若干個方法集成到一個方法中,以便形成一個解決問題的算法骨架。模版方法在接口或抽象類中定義,

其調用的方法在接口或抽象類也有定義,在子類中進行重寫。

2.可以通過定義模版方法給出成熟的算法步驟,同時又不限制步驟的細節,具體模版實現算法細節不會改變整個

算法的骨架。


實現一,使用接口:

public interface editModule{
public void step1();
public void step2();
public void step3();
public default void editStep(){//jdk8以後的新特性,使用default關鍵字修飾的方法可以有方法體
step1();
step2();
step3();
}
}
public class module1 implements editModule{
public void step1(){
System.out.println("模塊1 執行步驟一");
}
public void step2(){
System.out.println("模塊1 執行步驟二");
}
public void step3(){
System.out.println("模塊1 執行步驟三");
}
}
public class module2 implements editModule{
public void step1(){
System.out.println("模塊2 執行步驟一");
}
public void step2(){
System.out.println("模塊2 執行步驟二");
}
public void step3(){
System.out.println("模塊2 執行步驟三");
}
}
public class runApp{
public static void main(String args[]){
editModule eM=new module1();
eM.editStep();
eM=new module2();
eM.editStep();
}
}

輸出:


模塊1 執行步驟一
模塊1 執行步驟二
模塊1 執行步驟三
模塊2 執行步驟一
模塊2 執行步驟二
模塊2 執行步驟三

實現二,使用抽象類:

public abstract class editModule{
public abstract void step1();
public abstract void step2();
public abstract void step3();
public void editStep(){//可用final修飾
step1();
step2();
step3();
}
}
public class module1 extends editModule{
public void step1(){
System.out.println("模塊1 執行步驟一");
}
public void step2(){
System.out.println("模塊1 執行步驟二");
}
public void step3(){
System.out.println("模塊1 執行步驟三");
}
}
public class module2 extends editModule{
public void step1(){
System.out.println("模塊2 執行步驟一");
}
public void step2(){
System.out.println("模塊2 執行步驟二");
}
public void step3(){
System.out.println("模塊2 執行步驟三");
}
}
public class runApp{
public static void main(String args[]){
editModule eM=new module1();
eM.editStep();
eM=new module2();
eM.editStep();
}
}

輸出:

模塊1 執行步驟一
模塊1 執行步驟二
模塊1 執行步驟三
模塊2 執行步驟一
模塊2 執行步驟二
模塊2 執行步驟三


參考自 《java面向對象程序設計——實驗指導與習題解答(張躍平等 著)》








發佈了35 篇原創文章 · 獲贊 13 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章