知识卡片

模板方法与桥接:分离变与不变的两种方向

普通读书笔记卡 · 1979.s

内容

分离变与不变有多种模式形态:①模板方法(template method)向上提取为抽象类的抽象方法——执行步骤(骨架)不变、可变步骤交子类实现(如 AbstractAuthenticationManager.authenticate 模板方法固定,doAuthentication 抽象方法由 ProviderManager 实现),利用继承支持复用与多态;②桥接(bridge)——当一个对象存在两个变化方向完全不同的职责时,分别抽象再组合(如数据权限控制把“规则解析 DataRuleParser”与“数据过滤 DataFilter”拆成两个独立接口,以数据过滤为主、注入抽象的规则解析器)。发散:一个变化方向用策略/模板,两个正交变化方向用桥接——先数清“有几个独立变化的维度”再选模式。

参考来源

- 位置:《解构领域驱动设计》附录A A.2.2(源文件:_epub-src/OEBPS/034.xhtml) - 结论依据:原文以认证模板方法与数据权限桥接为例,说明分离变与不变的向上提取与双维度分离两种形态。 - 原始内容:模板方法(template method)模式同样分离了变与不变,只是分离变化的方向是向上提取为抽象类的抽象方法……形成桥接(bridge)模式。