目录
之前在组合模式中就是用到这个例子,因为可以用树形来展示,可以用组合模式来解决问题。
也可以用迭代器模式。
说明:
优点:
- public class Department {
- private String name;
- private String desc;
- public Department(String name, String desc) {
- super();
- this.name = name;
- this.desc = desc;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDesc() {
- return desc;
- }
- public void setDesc(String desc) {
- this.desc = desc;
- }
- }
- public class ComputerCollegeIterator implements Iterator {
-
- //这里我们需要Department 是以怎样的方式存放=>数组
- Department[] departments;
- int position = 0; //遍历的位置
-
- public ComputerCollegeIterator(Department[] departments) {
- this.departments = departments;
- }
-
- //判断是否还有下一个元素
- @Override
- public boolean hasNext() {
- // TODO Auto-generated method stub
- if(position >= departments.length || departments[position] == null) {
- return false;
- }else {
-
- return true;
- }
- }
-
- @Override
- public Object next() {
- // TODO Auto-generated method stub
- Department department = departments[position];
- position += 1;
- return department;
-
- //删除的方法,默认空实现
- public void remove() {
-
- }
- }
- public interface College {
- public String getName();
- //增加系的方法
- public void addDepartment(String name, String desc);
- //返回一个迭代器,遍历
- public Iterator createIterator();
- }
-
-
- public class ComputerCollege implements College {
-
- Department[] departments;
- int numOfDepartment = 0 ;// 保存当前数组的对象个数
-
- public ComputerCollege() {
- departments = new Department[5];
- addDepartment("Java专业", " Java专业 ");
- addDepartment("PHP专业", " PHP专业 ");
- addDepartment("大数据专业", " 大数据专业 ");
-
- }
-
- @Override
- public String getName() {
- return "计算机学院";
- }
-
- @Override
- public void addDepartment(String name, String desc) {
- Department department = new Department(name, desc);
- departments[numOfDepartment] = department;
- numOfDepartment += 1;
- }
-
- @Override
- public Iterator createIterator() {
- return new ComputerCollegeIterator(departments);
- }
-
- }
- public class OutPutImpl {
-
- //学院集合
- List
collegeList; -
- public OutPutImpl(List
collegeList) { - this.collegeList = collegeList;
- }
- //遍历所有学院,然后调用printDepartment 输出各个学院的系
- public void printCollege() {
- //从collegeList 取出所有学院, Java 中的 List 已经实现Iterator
- Iterator
iterator = collegeList.iterator(); - while(iterator.hasNext()) {
- //取出一个学院
- College college = iterator.next();
- System.out.println("=== "+college.getName() +"=====" );
- printDepartment(college.createIterator()); //得到对应迭代器
- }
- }
-
- //输出 学院输出 系
- public void printDepartment(Iterator iterator) {
- while(iterator.hasNext()) {
- Department d = (Department)iterator.next();
- System.out.println(d.getName());
- }
- }
- }
- public class Client {
-
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //创建学院
- List
collegeList = new ArrayList(); -
- ComputerCollege computerCollege = new ComputerCollege();
- InfoCollege infoCollege = new InfoCollege();
-
- collegeList.add(computerCollege);
- //collegeList.add(infoCollege);
-
- OutPutImpl outPutImpl = new OutPutImpl(collegeList);
- outPutImpl.printCollege();
- }
-
- }