http://blog.csdn.net/idearfly/article/details/4552348

Collections.unmodifiableList方法的使用与场景

假装没事ソ 提交于 2019-12-05 09:24:27
在《重构——改善既有代码的设计》一书中,有一种重构手法叫Encapsulate Collection (封装集群),为了演示该重构手法,我写了四个类,通过对比重构前后的代码,加深对 这一重构手法的理解。 类Student有一ArrayList属性,如果没有阅读《重构——改善既有代码的设计》一书, 很多人可能会像我一样,如下设计类Student。但是,如果通过Student.getCourses() 获得对ArrayList属性引用后,就可以任意为Student对象添加“课程”,而Student对象 对此一无所知,这不符合面向对象编程的习惯。 package com.readonlylist; import java.util.ArrayList; public class Student { private String name; private ArrayList<String> courses; public Student(String name, ArrayList<String> courses) { this.name = name; this.courses = courses; } public ArrayList<String> getCourses() { return courses; } public void setCourses(ArrayList