标签:shouldApply void 示范 protected 蛋糕 设计模式 public 模板
/**
* 类说明:抽象蛋糕模型
*/
public abstract class AbstractCake {
protected abstract void shape();
protected abstract void apply();
protected abstract void brake();
/*模板方法*/
// public final void run(){
// this.shape();
// this.apply();
// this.brake();
// }
/*模板方法*/
public final void run(){
this.shape();
//实际使用中保证灵活性,增加钩子
if(this.shouldApply()){
this.apply();
}
this.brake();
}
protected boolean shouldApply(){
return true;
}
}
/**
* 类说明:小蛋糕 继承实现抽象模板
*/
public class SmallCake extends AbstractCake {
private boolean flag = false;
public void setFlag(boolean shouldApply){
flag = shouldApply;
}
@Override
protected boolean shouldApply() {
return this.flag;
}
@Override
protected void shape() {
System.out.println("小蛋糕造型");
}
@Override
protected void apply() {
System.out.println("小蛋糕涂抹");
}
@Override
protected void brake() {
System.out.println("小蛋糕烘焙");
}
}
/**
* 类说明:生产蛋糕
*/
public class MakeCake {
public static void main(String[] args) {
//芝士蛋糕继承模板类
AbstractCake cake = new CheeseCake();
cake.run();
//小蛋糕继承模板类
AbstractCake smalCake = new SmallCake();
smalCake.run();
}
}
标签:shouldApply,void,示范,protected,蛋糕,设计模式,public,模板 来源: https://www.cnblogs.com/kixxz/p/14945493.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。