Template Method Pattern
阿新 • • 發佈:2020-06-28
Introduction
An Example
//SoyaMilk.java public abstract class SoyaMilk { //模板方法寫成final防止子類重寫 protected final void make(){ select(); addCondiments(); soak(); beat(); } protected void select(){ System.out.println("Select"); } protected abstract void addCondiments(); protected void soak(){ System.out.println("Step 3, soak them."); } protected void beat(){ System.out.println("Work"); } }
//RedBeanMilk.java
public class RedBeanSoyaMilk extends SoyaMilk {
@Override
protected void addCondiments() {
System.out.println("add black bean");
}
}
//PeanutMilk.java public class PeanutSoyaMilk extends SoyaMilk { @Override protected void addCondiments() { System.out.println("add peanut"); } }
//Client.java public class Client { public static void main(String[] args) { System.out.println("Make Black Bean SoyaMilk"); SoyaMilk blackBeanMilk = new RedBeanSoyaMilk(); blackBeanMilk.make(); System.out.println("Make Peanut SoyaMilk"); SoyaMilk peanutMilk = new PeanutSoyaMilk(); peanutMilk.make(); } }