簡単な入れ子構造を扱う #14
SchoolとGradeはSetContainerの拡張で済む。
school/School.java
package school; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; public class School extends SetContainer<Grade> { public Grade add(String name) { Grade g = get(name); if (g == null) put(name, g = new Grade(name)); return g; } }
school/Grade.java
package school; public class Grade extends SetContainer<Group> implements Named { private Named named; Grade(String name) { if (name == null) throw new IllegalArgumentException("null name"); named = new NamedSupport(name); } public String getName() { return named.getName(); } public Group add(String name) { Group g = get(name); if (g == null) put(name, g = new Group(name)); return g; } }
これらはSchoolUser4.javaを何ら変えることなく同じ結果を引き出せる。