来自生活的设计模式,这里用了个无人豆浆机做例子。
1、多功能的豆浆机程序
public abstract class SoybeanMilkMachine {
private String water;
public final void creat() {
Boolean normal = Integer.parseInt(StringUtils.isBlank(getWater()) ? "0" : getWater()) >= 500;
if (detection(normal)) {
putInFoodMaterial();
grind();
addWater();
heatFood();
outOfTheCup();
clear();
}
}
protected boolean detection(boolean b) {
if (!b) {
System.out.println("警告:水量不够!请加水!不进行任何操作!");
return false;
}
return true;
}
protected abstract void putInFoodMaterial();
protected abstract void grind();
protected void addWater() {
System.out.println("加水");
}
protected abstract void heatFood();
protected void outOfTheCup() {
System.out.println("装入接浆杯中。");
}
protected void clear() {
System.out.println("自动清洗。");
}
public String getWater() {
return water;
}
public void setWater(String water) {
this.water = water;
}
}
2、制作咖啡的程序
public class Coffee extends SoybeanMilkMachine {
@Override
protected void putInFoodMaterial() {
System.out.println("放入12g咖啡豆");
}
@Override
protected void grind() {
System.out.println("粗研磨");
}
@Override
protected void heatFood() {
System.out.println("开水冲泡,过滤");
}
}
3、制作豆浆的程序
public class SoybeanMilk extends SoybeanMilkMachine {
@Override
protected void putInFoodMaterial() {
System.out.println("放入一量杯黄豆/杂粮豆");
}
@Override
protected void grind() {
System.out.println("破壁,研磨至无颗粒");
}
@Override
protected void heatFood() {
System.out.println("多次烧煮,直至将豆浆煮熟无毒");
}
}
4、测试
public class Test {
public static void main(String[] args) {
Coffee coffee = new Coffee();
coffee.setWater("600");
coffee.creat();
System.out.println("=====================");
SoybeanMilk soybeanMilk = new SoybeanMilk();
soybeanMilk.creat();
}
}