工厂模式
1.set list map为mutable,但Collections类中有将mutable–>immutable的静态方法。
public static <T> Set<T> unmodifiableSet(Set <? extends T> s);
public static <T> List<T> unmodifiableList(Set <? extends T> l);
public static <T> Map<T> unmodifiableMap(Map <? extends T> m);
2
.在Collections的实现类中,用工厂方法得到immutable的集合对象
public static <T> Set<T> unmodifiableSet(Set <? extends T> s){
return new unmodifiableSet(s);
}
装饰模式
unmodifiableSet,unmodifiableList实现于Set,List接口,扩充一些新的方法,重写方法,使之变成immutable。
应用
List<String> list = new ArrayList<>();
List<String> listcopy = Collections.unmodifiableList(list);
list.add("a");//正常
listcopy.add("a");//报错