利用设计模式 Iterator 创建一个车库模型

    xiaoxiao2021-03-26  19

    使用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());     }              } }

    转载请注明原文地址: https://ju.6miu.com/read-660427.html

    最新回复(0)