首页 > 其他 > 详细

Iterator Pattern

时间:2020-06-28 20:10:01      阅读:48      评论:0      收藏:0      [点我收藏+]

Theory

技术分享图片


技术分享图片

An Example

技术分享图片


技术分享图片

// 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();

    }
}

Iterator Pattern

原文:https://www.cnblogs.com/nedrain/p/13204434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!