模板和策略
🧱 模板方法模式
思想:把固定流程写在父类,可变步骤留给子类。父类控制“骨架”,子类只负责“填空”。
类比:泡茶和冲咖啡,流程都是“烧水→冲泡→倒杯→加调料”。无论冲什么,先烧水后倒杯的步骤都一样,只有“冲泡什么”“加什么调料”不同。父类模板方法用 final 锁死流程,子类重写抽象方法实现差异。
关键点:
模板方法用 final 防篡改
可定义钩子方法(默认实现,子类可选覆盖)增加灵活性
🎯 策略模式
思想:将一堆可互换的算法封装成独立的对象,客户端只跟接口打交道,算法变化不影响调用方。
类比:商城的折扣计算。不管你是普通用户、VIP还是SVIP,结账时都是“算价格”,但“怎么算”不同。于是抽象出 DiscountStrategy 接口,每个用户类型是一种策略,调用方(价格计算器)只依赖接口,不关心具体策略,新增用户类型只需加一个策略类,不改旧代码。
常见结合:策略 + 工厂(或Map注入)提供“策略注册表”,根据条件获取对应策略。
与模板方法的区别:
模板方法:用继承固定流程,改步骤。
策略模式:用组合封装整个算法族,可动态替换。
微信扫一扫赞赏作者喜欢作者
内蒙古,26分钟前,
夜雨聆风