设计模式-模板模式
发布于 2021-04-05 21:41
package com.daboluo.template.v1;
/**
* 抽象的面食制作类
*
* @author leishufeng
* @version 1.0
*/
public abstract class AbstractPasta {
private final float water;
private final float flour;
public AbstractPasta(float water, float flour) {
this.water = water;
this.flour = flour;
}
public void doPasta() {
System.out.println("=============开始制作面食!===============");
System.out.println("第一步:");
prepare();
System.out.println("第二步:");
makeNoodles();
System.out.println("第三步:");
cut();
System.out.println("第四步:");
make();
System.out.println("第五步:");
steam();
System.out.println("第六步:");
outOfThePot();
System.out.println("=============面食制作完成!===============");
}
public void prepare() {
System.out.println("加入水:" + water + " ml, 加入面:" + flour + " 两!");
}
public void makeNoodles() {
System.out.println("将水和面和均匀!并放置一段时间!");
}
public void cut() {
System.out.println("将面分成相等的面团!");
}
/**
* 制作面食
*/
public abstract void make();
public void steam() {
System.out.println("将面食蒸熟!");
}
public void outOfThePot() {
System.out.println("出锅!");
}
}
package com.daboluo.template.v1;
/**
* 馒头类
*
* @author leishufeng
* @version 1.0
*/
public class SteamedBread extends AbstractPasta{
public SteamedBread(float water, float flour) {
super(water, flour);
}
public void make() {
System.out.println("将面团揉成圆形或者自己喜欢的图形!");
}
}
包子类:
package com.daboluo.template.v1;
/**
* 包子类
*
* @author leishufeng
* @version 1.0
*/
public class Bun extends AbstractPasta {
private final float vegetables;
private final float meat;
public Bun(float water, float flour, float vegetables, float meat) {
super(water, flour);
this.vegetables = vegetables;
this.meat = meat;
}
public void prepare() {
super.prepare();
System.out.println("将蔬菜:" + vegetables + " 斤, 肉:" + meat + " 两!剁成肉馅");
}
public void make() {
System.out.println("将面团和肉馅包成包子形状!");
}
}
测试类:
package com.daboluo.template.v1;
/**
* 测试类
*
* @author leishufeng
* @version 1.0
*/
public class Main {
public static void main(String[] args) {
AbstractPasta steamedBread = new SteamedBread(1,2);
AbstractPasta bun = new Bun(2,3,4,1);
steamedBread.doPasta();
bun.doPasta();
}
}
输出结果:
=============开始制作面食!===============
第一步:
加入水:1.0 ml, 加入面:2.0 两!
第二步:
将水和面和均匀!并放置一段时间!
第三步:
面分成相等的面团!
第四步:
将面团揉成圆形或者自己喜欢的图形!
第五步:
将面食蒸熟!
第六步:
出锅!
=============面食制作完成!===============
=============开始制作面食!===============
第一步:
加入水:2.0 ml, 加入面:3.0 两!
将蔬菜:4.0 斤, 肉:1.0 两!剁成肉馅
第二步:
将水和面和均匀!并放置一段时间!
第三步:
面分成相等的面团!
第四步:
将面团和肉馅包成包子形状!
第五步:
将面食蒸熟!
第六步:
出锅!
=============面食制作完成!===============
可以看到,上面的代码可以正确的制作包子和馒头,在我应用抽象类将制作面食的过程封装完毕后,实际的子类只需要将不完全一样或者自己特殊的部分单独实现即可,非常简单清晰。
总结:
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材