//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();
}
}
原文:https://www.cnblogs.com/nedrain/p/13202542.html