1. 程式人生 > >設計模式:模板方法模式-template method

設計模式:模板方法模式-template method

定義一個操作中的演算法骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重新定義該演算法的某些特定步驟

這裡寫圖片描述

在抽象父類中,可以定義多種不同型別的方法,如下:
這裡寫圖片描述

呼叫基本方法:演算法結構,整一個邏輯的合集;基本方法的宣告:定義介面,由子類實現該方法;基本方法(空方法):一般為鉤子方法,子類可實現亦可不實現,如servlet中的doGet和doPost,若子類實現了,則程式附加新的功能;基本方法(已經實現):由父類決定的不可變的程式碼,屬於演算法骨架中的方法

程式碼

Main

public class Main {

    public static void
main(String[] args) { Tax tax=new FirstTax(); tax.getTax(); tax=new SecTax(); tax.getTax(); } }

abs:Tax

public abstract class Tax {

    public void getTax(){
        begin();
        System.out.println("稅率是 "+doGetRate());
        getName();
    }

    protected
abstract double doGetRate(); protected void getName(){ } private final void begin(){ System.out.println("徵稅啦"); } }

imp:FirstTax

public class FirstTax extends Tax {

    @Override
    protected double doGetRate() {
        return 0.03;
    }

}

imp:SecTax

public class SecTax
extends Tax {
@Override protected double doGetRate() { return 0.07; } @Override protected void getName() { System.out.println("徵收印花稅"); } }