模板模式(Template Pattern)
模板模式总的来说就是父类定义好步骤与方法,且父类将公共的内容进行抽取,然后子类只做不同的内容即可。
@Slf4j public abstract class GoHomeTemplate { public void goHomeMian(){ log.info("========= goStation ============"); buyTickets(); ridingTools(); log.info("========= goHome ============"); } protected abstract void ridingTools(); protected abstract void buyTickets(); }
@Slf4j public class ShipGoHome extends GoHomeTemplate { @Override protected void ridingTools() { log.info("============ by ship ==============="); } @Override protected void buyTickets() { log.info("============ buy ship tickets==============="); } }
@Slf4j public class TrainGoHome extends GoHomeTemplate { @Override protected void ridingTools() { log.info("============ by train ==============="); } @Override protected void buyTickets() { log.info("============ buy train tickets==============="); } }
测试
@Slf4j @SpringBootTest public class TemplateTest { @Test public void builderTest(){ GoHomeTemplate shipGoHome = new ShipGoHome(); shipGoHome.goHomeMian(); } }
模板模式总体比较简单,没什么可说的,但是在看模板模式的时候,一直有个问题,模板模式和策略模式的区别是什么?
其实模板模式和策略模式并没有一个很明确的区分点,在我看来,可能是侧重点不同,模板模式更注重的是子类要按照父类定义好的流程处理,而策略模式,更像是一个散装的内容,其子类只是对付类中某一种场景的具体实现,至于顺序或如何使用,需要调用者自行控制。
------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~