1. 组合设计模式是什么
组合设计模式表示个体和集合之间的关系,而且使用者不需要区分个体和集合。
2. 图示
3. 解释
3.1 个体和集合关系的体现
TestSuite代表集合 ,TestCase代表个体,Test接口。TestRunner代表TestSuite和TestCase的使用者。
TestSuite中包含多个TestCase,所以是个体和集合的关系。
集合中增加了添加个体的方法。
集合和个体对接口方法run()的实现不一样。个体TestCase.run()负责运行单一测试用例。集合TestSuite.run()负责遍历集合中所有元素,并调用其run()。
3.2 使用者不需要区分个体和集合的体现
原因: 集合和个体实现了同一个接口Test,使用者可以直接调用接口方法,这里用到了多态。
使用者有两个,一是TestRunner.doRun(),doRun(test)直接访问test,不需要区分test是集合还是个体。
二是集合TestSuite,考虑集合嵌套集合的情况,这样集合中的元素可能是集合,也可能是个体。每一个父集合不需要关心其元素是集合还是元素,直接调用test.run(),由于多态,集合和个体可以访问到正确的run()