>[success] # 书中的总结 * 使用场景 ~~~ 1.'表示对象的部分-整体层次结构'。组合模式可以方便地'构造一棵树'来表示对象的部分-整 体结构。特别是我们在开发期间不确定这棵树到底存在多少层次的时候。在树的构造最 终完成之后,只需要通过请求树的最顶层对象,便能对整棵树做统一的操作。在组合模 式中增加和删除树的节点非常方便,并且符合开放-封闭原则。 2.'客户希望统一对待树中的所有对象'。组合模式使客户可以忽略组合对象和叶对象的区别, 客户在面对这棵树的时候,不用关心当前正在处理的对象是组合对象还是叶对象,也就 不用写一堆 if、else 语句来分别处理它们。组合对象和叶对象会各自做自己正确的事情, 这是组合模式最重要的能力。 ~~~ * 优点 ~~~ 1.组合模式可以让我们使用树形方式创 建对象的结构。我们可以把相同的操作应用在组合对象 和单个对象上 ~~~ * 缺点 ~~~ 1.系统中的每个对象看起来都 与其他对象差不多。它们的区别只有在运行的时候会才会显现出来 ,这会使代码难以理解。此外, 如果通过组合模式创建了太多的对象,那么这些对象可能会让系 统负担不起。 ~~~