Encapsulate Collection (封装集合)
Summary :有个函数返回一个集合。 让这个函数返回该集合的一个只读副本,并在这个类中提供添加 / 移除集合元素的函数 Motivation: 我们常常会在一个类中使用集合( collection ,可能是 array 、 list 、 set 或 vector )来保存一组实例。这样的类通常也会提供针对该集合的取值 / 设值函数。 但是,集合的处理方式应该和其他种类的数据略有不同。取值函数不该返回集合自身,因为这会让用户得以修改集合内容而集合拥有者却一无所悉。这也会对用户暴露过多对象内部数据结构的信息。如果一个取值函数确实需要返回多个值,它应该避免用户直接操作对象内所保存的集合,并隐藏对象内与用户无关的数据结构。至于如何做到这一点,视你使用的 java 版本不同而有所不同。另外,不应该为这整个结婚提供一个设置函数,但应该提供用以为集合添加 / 移除元素的函数。这样,集合拥有者(对象)就可以控制集合元素的添加和移除。 如果你做到以上几点,集合就被很好的封装起来了,这便可以降低集合拥有者和用户之间的耦合度。 Mechanics : 1. 加入为集合添加 / 移除元素的函数 2. 将保存集合的字段初始化为一个空集合。 3. 编译。 4. 找出集合设值函数的所有调用者。你可以修改那个设值函数,让它使用上述新建立的“添加 / 移除元素”函数;也可以直接修改调用端