1. 程式人生 > >設計模式-模塊方法模式(TemplateMethod)

設計模式-模塊方法模式(TemplateMethod)

bst git inf color string ebo page qjm 頭部

模塊方法模式是行為模式之一,它把具有特定步驟算法中的某些必要的處理委讓給抽象方法,通過子類繼承對抽象方法的不同實現改變整個算法的行為。

UML圖:

技術分享圖片

具體代碼:

/**
 * 抽象-模塊方法模式核心
 */
public abstract class AbstractPage {
    public abstract void makeHeader();//組裝頁面頭部
    public abstract void makeBody();//組裝頁面body
    public abstract void makeFooter();//組裝頁腳

    public void make(){
        makeHeader();
//組裝頭 makeBody();//組裝身 makeFooter();//組裝腳 } }
/**
 * 頁面1
 */
public class Page1 extends AbstractPage{
    @Override
    public void makeHeader() {
        System.out.println("頁面1,寫頭");
    }

    @Override
    public void makeBody() {
        System.out.println("頁面1,寫身");
    }

    @Override
    
public void makeFooter() { System.out.println("頁面1,寫腳"); } }
/**
 * 頁面2
 */
public class Page2 extends AbstractPage{
    @Override
    public void makeHeader() {
        System.out.println("頁面2,寫頭");
    }

    @Override
    public void makeBody() {
        System.out.println("頁面2,寫身");
    }

    @Override
    
public void makeFooter() { System.out.println("頁面2,寫腳"); } }
public class Main {
    public static void main(String[] args) {
        AbstractPage page1 = new Page1();
        page1.make();//頁面1拼裝

        System.out.println("---------------------------");

        AbstractPage page2 = new Page2();
        page2.make();//頁面2拼裝
    }
}

結果:

頁面1,寫頭
頁面1,寫身
頁面1,寫腳
---------------------------
頁面2,寫頭
頁面2,寫身
頁面2,寫腳

應用場景:

1.具有統一的操作步驟或操作過程

2.具有不同的操作細節

3.存在多個具有同樣操作步驟的應用場景,但某些具體的操作細節卻各不相同

源碼地址:https://github.com/qjm201000/design_pattern_templateMethod.git

設計模式-模塊方法模式(TemplateMethod)