另一种选择则是使用关联关系,A与B保持逻辑上的sibling的关系不变,但是使用关联来实现一种类似于单一Composite的结构,如下所示:

  这样做的好处在于如下几点:
  主要的优点是保持了A与B逻辑上的关系正确性,而非“认兄为父”;
  当A已经存在的时候,不需要更多额外的修改可以完成这种工作;
  相比于直接复制SpecialWorksForCaseA中的操作,当A逻辑发生改变的时候,更加容易更新;
  相比于将SpecialWorksForCaseA提取到父类的CommonWorks的做法,缩减了父类的复杂性和规模,逻辑上成立。
  缺点在于:
  当A中的mTestArgs依赖于父类的mTestConfiguration时候,类CaseA的实例化需要增加复杂度。