package com.example.wxstudy.demo.test1.template;
/**
* 抽象类(定义模版方法和抽象方法)
*
*/
public abstract class AbstractClass {
//模版方法定义
public final void cookProcess(){
pourOil();
heatOil();
pourVegetable();
pourSauce();
fry();
}
//具体方法 第一步;倒油
public void pourOil(){
System.out.println("倒油");
}
//第二步:热油是一样的,可以直接实现
public void heatOil(){
System.out.println("热油");
}
//抽象方法 第三步:倒蔬菜是不一样的,一个是包菜,一个是下菜心
public abstract void pourVegetable();
//抽象方法 第四步:倒调味料是不一样倒
public abstract void pourSauce();
//具体方法 第五步:翻炒是一样的
public void fry(){
System.out.println("炒熟");
}
}
public class ConcreteClass_BaoCai extends AbstractClass{
@Override
public void pourVegetable() {
System.out.println("下锅倒蔬菜是包菜");
}
@Override
public void pourSauce() {
System.out.println("下锅的酱料是辣椒");
}
}
public class ConcreteClass_CaiXin extends AbstractClass{
@Override
public void pourVegetable() {
System.out.println("下锅倒蔬菜是菜心");
}
@Override
public void pourSauce() {
System.out.println("下锅的酱料是蒜蓉");
}
}
public class Client {
public static void main(String[] args) {
//炒包菜,创建对象
ConcreteClass_BaoCai concreteClassBaoCai= new ConcreteClass_BaoCai();
//调用炒菜的功能
concreteClassBaoCai.cookProcess();
}
}