模板模式(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();
    }

}

  模板模式总体比较简单,没什么可说的,但是在看模板模式的时候,一直有个问题,模板模式和策略模式的区别是什么?

  其实模板模式和策略模式并没有一个很明确的区分点,在我看来,可能是侧重点不同,模板模式更注重的是子类要按照父类定义好的流程处理,而策略模式,更像是一个散装的内容,其子类只是对付类中某一种场景的具体实现,至于顺序或如何使用,需要调用者自行控制。

原文地址:https://www.cnblogs.com/liconglong/p/14172899.html