文件名称:一些值得注意的地方-清华大学计算机考研经验贴.
文件大小:8.5MB
文件格式:PDF
更新时间:2024-07-15 10:06:11
javasc
10.8 一些值得注意的地方 在使用组合模式的时候,还有以下几个值得我们注意的地方。 1. 组合模式不是父子关系 组合模式的树型结构容易让人误以为组合对象和叶对象是父子关系,这是不正确的。 组合模式是一种 HAS-A(聚合)的关系,而不是 IS-A。组合对象包含一组叶对象,但 Leaf 并不是 Composite 的子类。组合对象把请求委托给它所包含的所有叶对象,它们能够合作的关键 是拥有相同的接口。 为了方便描述,本章有时候把上下级对象称为父子节点,但大家要知道,它们并非真正意义 上的父子关系。 2. 对叶对象操作的一致性 组合模式除了要求组合对象和叶对象拥有相同的接口之外,还有一个必要条件,就是对一组 叶对象的操作必须具有一致性。 比如公司要给全体员工发放元旦的过节费 1000 块,这个场景可以运用组合模式,但如果公 司给今天过生日的员工发送一封生日祝福的邮件,组合模式在这里就没有用武之地了,除非先把 今天过生日的员工挑选出来。只有用一致的方式对待列表中的每个叶对象的时候,才适合使用组 合模式。 3. 双向映射关系 发放过节费的通知步骤是从公司到各个部门,再到各个小组,最后到每个员工的邮箱里。这 本身是一个组合模式的好例子,但要考虑的一种情况是,也许某些员工属于多个组织架构。比如 某位架构师既隶属于开发组,又隶属于架构组,对象之间的关系并不是严格意义上的层次结构, 在这种情况下,是不适合使用组合模式的,该架构师很可能会收到两份过节费。 图灵社区会员 balabala233 专享 尊重版权