package template;
/**
* @Author Liuyunda
* @Date 2021/6/17 16:52
* @Email man021436@163.com
* @Description: DOTO
*/
abstract class MakeSoup{
/**
* @description: 起锅烧油
* @param: []
* @return: void
* @author: Liuyd
* @date: 2021/6/17
*/
private void qiguoshaoyou(){
System.out.println("起锅烧油");
}
/**
* @description: 放入食材
* @param: []
* @return: void
* @author: Liuyd
* @date: 2021/6/17
*/
abstract void fangrushicai();
/**
* @description: 放入生命的源泉
* @param: []
* @return: void
* @author: Liuyd
* @date: 2021/6/17
*/
private void fangrushengmingyuanquan(){
System.out.println("放入生命源泉");
}
/**
* @description: 等一段时间
* @param: []
* @return: void
* @author: Liuyd
* @date: 2021/6/17
*/
abstract void dengyiduanshijian();
/**
* @description: 完成出锅
* @param: []
* @return: void
* @author: Liuyd
* @date: 2021/6/17
*/
private void finish(){
System.out.println("完成出锅");
}
/**
* @description: 给我点个赞(可被继承或重写)
* @param: []
* @return: void
* @author: Liuyd
* @date: 2021/6/17
*/
public void geiwodiangezan(){
System.out.println("给达子点个赞");
}
/**
* @description: 钩子方法
* @param: []
* @return: void
* @author: Liuyd
* @date: 2021/6/17
*/
public Boolean gouzi(){
return true;
}
public final void template(){
qiguoshaoyou();
fangrushicai();
fangrushengmingyuanquan();
dengyiduanshijian();
finish();
if (gouzi()){
geiwodiangezan();
}
}
}
class babaozhou extends MakeSoup{
@Override
void fangrushicai() {
System.out.println("放入八宝粥食材");
}
@Override
void dengyiduanshijian() {
System.out.println("等一大会");
}
}
class pidanshourouzhou extends MakeSoup{
@Override
void fangrushicai() {
System.out.println("放入皮蛋瘦肉粥食材");
}
@Override
void dengyiduanshijian() {
System.out.println("等一小会");
}
@Override
public Boolean gouzi() {
return false;
}
}
public class TemplateMethodDemo {
public static void main(String[] args) {
babaozhou babaozhou = new babaozhou();
babaozhou.template();
pidanshourouzhou pidanshourouzhou = new pidanshourouzhou();
pidanshourouzhou.template();
}
}
模版方法模式
最新推荐文章于 2024-04-07 23:11:11 发布