当前位置: 首页> 文旅> 酒店 > logo免费制作_哈尔滨免费建站模板_英文外链代发_百度网站官网入口网址

logo免费制作_哈尔滨免费建站模板_英文外链代发_百度网站官网入口网址

时间:2025/7/11 0:30:39来源:https://blog.csdn.net/www1056481167/article/details/147069856 浏览次数:0次
logo免费制作_哈尔滨免费建站模板_英文外链代发_百度网站官网入口网址

模板方法模式

  • 编写制作豆浆的程序,说明如下
    1)制作豆浆的流程选材添加配料浸泡放到豆浆机打碎
    2)通过添加不同的配料,可以制作出不同口味的豆浆
    3)选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的
    4)请使用模板方法模式完成 说明: 因为模板方法模式,比较简单, 很容易就想到这个方案 ,因此就直接使用,不再使用传统的方案来引出模板方法模式

原理图
在这里插入图片描述

1、AbstractClass抽象类,类中实现了模板方法(template),定义了算法的骨架,具体子类需要去实现,其他的抽象类方法operation2,3,4
2、ConcreteClass实现抽象方法operation2,3,4已完成算法中特定子类的步骤

@Slf4j
public abstract class SoyaMilk {//模板方法 make 模板方法可以做成final,不让子类去覆盖final void make() {select();addCondiments();soak();beat();}//选择材料void select() {log.info("第一步:选择好的新鲜黄豆");}//添加不同的配料,抽象方法,子类具体实现。abstract void addCondiments();//浸泡void soak() {log.info("第三步:黄豆和配料开始浸泡,需要3小时");}//打浆void beat() {log.info("第四步:黄豆和配料放到豆浆机中去打碎。");}
}
@Slf4j
public class PeanutSoyaMilk extends  SoyaMilk{@Overridevoid addCondiments() {log.info("第二步:加入花生");}
}
@Slf4j
public class RedBeanSoyaMilk extends  SoyaMilk{@Overridevoid addCondiments() {log.info("第二步:加入红豆");}
}
@Slf4j
public class Client {public static void main(String[] args) {log.info("------制作红豆豆浆------");RedBeanSoyaMilk redBeanSoyaMilk = new RedBeanSoyaMilk();redBeanSoyaMilk.make();log.info("=====================================");log.info("------制作花生豆浆------");PeanutSoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();peanutSoyaMilk.make();}
}
------制作红豆豆浆------
- 第一步:选择好的新鲜黄豆
- 第二步:加入红豆
- 第三步:黄豆和配料开始浸泡,需要3小时
- 第四步:黄豆和配料放到豆浆机中去打碎。
=====================================
------制作花生豆浆------
- 第一步:选择好的新鲜黄豆
- 第二步:加入花生
- 第三步:黄豆和配料开始浸泡,需要3小时
- 第四步:黄豆和配料放到豆浆机中去打碎。

钩子方法

在模板方法模式的父类中,我们可以定义一个方法,不做任何事,子类可以去视为情况要不要覆盖它,称之为钩子程序。

@Slf4j
public abstract class SoyaMilk {//模板方法 make 模板方法可以做成final,不让子类去覆盖final void make() {select();if (customerWantCondiments()) {addCondiments();}soak();beat();}//......//钩子方法,决定是否需要添加配料boolean customerWantCondiments() {return true;}
}
@Slf4j
public class PureSoyaMilk extends SoyaMilk {@Overridevoid addCondiments() {//空实现}@Overrideboolean customerWantCondiments() {return false;}
}
@Slf4j
public class Client {public static void main(String[] args) {log.info("=====================================");log.info("------制作纯豆浆------");SoyaMilk pureSoyaMilk = new PureSoyaMilk();pureSoyaMilk.make();}
}
=====================================
------制作纯豆浆------
- 第一步:选择好的新鲜黄豆
- 第三步:黄豆和配料开始浸泡,需要3小时
- 第四步:黄豆和配料放到豆浆机中去打碎。
  • 模板方法在源码中的应用(spring IOC源码分析)
    在这里插入图片描述
    在这里插入图片描述

模板方法的注意事项和细节

1、基本的思想是:算法只存在于一个地方,也就是在父类中容易修改。,
需要修改算法时,只要修改父类的模板方法或者已经实现的某些步骤,子类就会继承这些修改。
2、实现了最大化代码复用,父类的模板方法和已经实现的某些步骤被直接的继承而直接使用。
3、即同意了算法,也提供了很大的灵活性。父类的模板方法确保了算法的结构保持不变,同时有子类提供部分步骤的实现。
4、该模式的不足之处:每一个不同的实现都需要一个子类实现,刀之类的个数增加,是的系统更加庞大。
5、一般末班方法都加上final关键字。发囊之子类重写模板方法。
6、模板方法模式使用场景。当要完成某个过程,该过程要执行一系列步骤,这一系列的步骤基本相同
但是个别步骤在实现时有可能不同,通常考虑用模板方法模式来处理。

关键字:logo免费制作_哈尔滨免费建站模板_英文外链代发_百度网站官网入口网址

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: