使用Iterator模式,将车停到车位中,并将车的品牌显示出来。一共使用2个接口和3个类,具体如下图
public interface Aggregate { public abstract Iterator iterator(); } ====================================
public interface Iterator { public abstract boolean hasNext(); public abstract Object next(); }
===================================
//创建车库 public class Garage implements Aggregate { private Car[] cars; private int load=0; //设定车位的大小 public Garage(int maxSize){ this.cars=new Car[maxSize]; } //根据车位号码 返回汽车 public Car getCar(int index){ return cars[index]; } //汽车按车位顺序入库,同时将车位号码加一 public void addCar(Car car){ this.cars[load]=car; load++; } //得到汽车数量 public int getLength(){ return load; } @Override public Iterator iterator() { // TODO Auto-generated method stub return new GarageIterator(this); } } =====================================
//创建汽车 public class Car { private String brand; public Car(String brand){ this.brand=brand; } public String getBrand(){ return brand; } } ==================================
//发挥遍历作用的类 public class GarageIterator implements Iterator { private Garage garage; private int index; public GarageIterator(Garage garage) { this.garage=garage; this.index=0; // TODO Auto-generated constructor stub } @Override public boolean hasNext() { if(index<garage.getLength()){ return true; }else{ return false; } } @Override public Object next() { Car car=garage.getCar(index); index++; // TODO Auto-generated method stub return car; } } ==============================显示类
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Garage garage=new Garage(3); garage.addCar(new Car("保时捷")); garage.addCar(new Car("凯迪拉克")); garage.addCar(new Car("玛莎拉蒂")); Iterator iterate=garage.iterator(); while(iterate.hasNext()){ Car car=(Car)iterate.next(); System.out.println(car.getBrand()); } } }
