// College.java
public interface College {
String getName();
void addDepartment(String name, String description);
Iterator createIterator();
}
// ComputerCollege.java
import java.util.Iterator;
public class ComputerCollege implements College {
Department[] departments;
int numOfDepartment = 0;
public ComputerCollege(){
departments = new Department[5];
addDepartment("Java","J");
addDepartment("AI","A");
addDepartment("Data", "D");
}
public String getName() {
return "Compute College";
}
public void addDepartment(String name, String description) {
Department department = new Department(name, description);
departments[numOfDepartment] = department;
numOfDepartment++;
}
public Iterator createIterator() {
return new ComputerCollegeIterator(departments);
}
}
// InfoCollege.java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class InfoCollege implements College {
List<Department> departmentList;
public InfoCollege(){
departmentList = new ArrayList<Department>();
addDepartment("Safe","S");
addDepartment("Read","R");
addDepartment("Server","E");
}
public String getName() {
return "Information College";
}
public void addDepartment(String name, String description) {
Department department = new Department(name, description);
departmentList.add(department);
}
public Iterator createIterator() {
return new InfoCollegeIterator(departmentList);
}
}
// Department.java
public class Department {
private String name;
private String description;
public Department(String name, String description) {
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
// ComputerCollegeIterator.java
import java.util.Iterator;
public class ComputerCollegeIterator implements Iterator {
Department[] departments;
int position = 0;
public ComputerCollegeIterator(Department[] departments){
this.departments = departments;
}
public boolean hasNext() {
if(position >= departments.length || departments[position] == null){
return false;
}else{
return true;
}
}
public Department next() {
Department department = departments[position];
position++;
return department;
}
public void remove() {
}
}
// InfoCollegeIterator.java
import java.util.Iterator;
import java.util.List;
public class InfoCollegeIterator implements Iterator {
List<Department> departmentList;
int index = -1;
public InfoCollegeIterator(List<Department> list){
this.departmentList = list;
}
public boolean hasNext() {
if(index >= departmentList.size() - 1){
return false;
}else {
index++;
return true;
}
}
public Department next() {
return departmentList.get(index);
}
public void remove() {
}
}
// OutputImpl.java
import java.util.Iterator;
import java.util.List;
public class OutputImpl {
List<College> collegeList;
public OutputImpl(List<College> colleges){
this.collegeList = colleges;
}
public void printCollege(){
Iterator<College> iterator = collegeList.iterator();
while (iterator.hasNext()){
College college = iterator.next();
System.out.println("The name of college : " + college.getName());
printDepartment(college.createIterator());
}
}
public void printDepartment(Iterator iterator){
while(iterator.hasNext()){
Department d =(Department) iterator.next();
System.out.println(d.getName());
}
}
}
// Client.java
import java.util.ArrayList;
public class Client {
public static void main(String[] args) {
ArrayList<College> colleges = new ArrayList<College>();
ComputerCollege computerCollege = new ComputerCollege();
InfoCollege infoCollege = new InfoCollege();
colleges.add(computerCollege);
colleges.add(infoCollege);
OutputImpl outputImpl = new OutputImpl(colleges);
outputImpl.printCollege();
}
}
原文:https://www.cnblogs.com/nedrain/p/13204434.html