1. 设计模式选型的决策树,根据变化维度(算法/对象创建/对象组合/行为)选择策略/工厂/组合/观察者,避免过度设计的 YAGNI 原则
说明设计模式选型的决策树,如何根据变化维度(算法/对象创建/对象组合/行为)选择策略/工厂/组合/观察者,以及如何用 YAGNI 原则避免过度设计?
- 按变化维度选择模式的决策树
- 策略/工厂/组合/观察者的适用场景
- YAGNI 原则与过度设计
设计模式选型的核心是"先识别变化点,再选对应模式"。决策树按变化维度分类:若变化的是"算法",用策略模式(Strategy)把算法封装成可替换的策略对象;若变化的是"对象创建方式",用工厂模式(Factory/Abstract Factory)把创建逻辑与使用解耦;若变化的是"对象组合结构",用组合模式(Composite)统一树叶与树枝;若变化的是"对象间的状态/行为通知",用观察者模式(Observer)实现一对多订阅。选型时先问"哪里会变、变化的频率与方向",再映射到模式,而不是为了用模式而用。同时要遵循 YAGNI(你不会需要它):只有确有变化需求时才引入模式的抽象层,否则过度设计会引入多余的接口与间接层,降低可读性与维护性。
模式选型是"变化驱动"而非"模式崇拜"。先定位变化维度再选模式,能避免无脑套用;配合 YAGNI,只在真实变化点上才做抽象,既享受模式的好处又不被过度设计拖累。面试中要体现"为什么要这个模式"而非"会背这个模式"。