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

}
复制代码

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

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

posted @   李聪龙  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示