面向方面设计模式模块化的定量研究
1 分离关注点的分组情况
1.1 第 1 组:改进分离
此组包含 Mediator、Composite、Observer、Command 和 Iterator 这五个模式。在引入变更前,使用方面(AO)的实现效果可能不如或等同于面向对象(OO)实现,但变更后,AO 实现展现出显著优势。这是因为这些模式的 AO 实现涉及更丰富的通用方面,封装了更多操作和代码行。
以 Mediator 模式为例,变更后,使用方面对 Mediator 和 Colleague 角色的隔离比 OO 解决方案在所有指标上高出 60%。定义 Colleague 角色原本需要 12 个类,而仅用四个方面就能封装该关注点。其他四个模式也有类似结果,即 AO 解决方案在修改后组件的绝对数量不变,体现了方面对于这五个模式角色完全分离的适用性。
不过,此组中 CoR、Strategy 和 Memento 这三个 AO 解决方案虽总体上改善了角色隔离,但在特定指标上存在负面结果。例如,CoR 的 AO 实现组件和过渡点更少,但模式角色实现涉及的操作更多;Memento 的 AO 解决方案对 Memento 角色的隔离效果较好,但在操作数量和组件数量方面不如 OO 实现。
1.2 第 2 组:分离度降低
该组包括 Template Method、Abstract Factory、Factory Method、Bridge、Builder 和 Flyweight 六个模式。前五个模式的 AspectJ 实现主要是将 AOP 作为多重继承的替代方案,用接口取代抽象类以增加实现灵活性。
尽管部分指标上 OO
超级会员免费看
订阅专栏 解锁全文
4377

被折叠的 条评论
为什么被折叠?



