设计模式12-迭代器模式

package DesignPattern;


import java.util.ArrayList;

public class IteratorPattern {
    //迭代器一统数组实现和ArrayList实现
    //迭代器帮助遍历集合,但是不暴露内部真实实现
    public interface Iterator{
        boolean hasNext();
        Object next();
    }
    public static class MenuItem{
        String name;
        String description;
        boolean vegetarian;
        double price;
        public MenuItem(String name,String description,boolean vegetarian,double price){
            this.name=name;
            this.description=description;
            this.vegetarian=vegetarian;
            this.price=price;
        }
        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;
        }

        public boolean isVegetarian() {
            return vegetarian;
        }

        public void setVegetarian(boolean vegetarian) {
            this.vegetarian = vegetarian;
        }

        public double getPrice() {
            return price;
        }

        public void setPrice(double price) {
            this.price = price;
        }
    }
    //两种菜单实现
    public static class PancakeHouseMenu{
        ArrayList menuItems;

        public PancakeHouseMenu() {
            this.menuItems = new ArrayList();
            addItem("breakfast","pancakes with eggs",true,2.99);
            addItem("waffles","waffles with eggs",false,3.59);
        }
        public void addItem(String name,String description,boolean vegetarian,double price){
            menuItems.add(new MenuItem(name,description,vegetarian,price));
        }
        public ArrayList getMenuItems(){
            return menuItems;
        }
    }
    public static class DinerMenu{
        static final int MAX_ITEMS=6;
        int numOfItems=0;
        MenuItem[] menuItems;
        DinerMenu(){
            menuItems= new MenuItem[MAX_ITEMS];

        }
        public void addItem(String name,String description,boolean vegetarian,double price){
            if(numOfItems>=MAX_ITEMS){
                System.out.println("menu is full");
            }
            else{
                menuItems[numOfItems++]=new MenuItem(name,description,vegetarian,price);
            }
        }
        public MenuItem[] getMenuItems(){
            return menuItems;
        }
    }

    public static class DinerMenuIterator implements Iterator{
        MenuItem[] items;
        int position=0;
        public DinerMenuIterator(MenuItem[] items) {
            this.items = items;
        }

        @Override
        public boolean hasNext() {
            if(position>=items.length||items[position]==null){
                return false;
            }
            return true;
        }

        @Override
        public Object next() {
            return items[position++];
        }
    }

    public static class PancakeHouseMenuIterator implements Iterator{
        java.util.Iterator itemIterator;

        public PancakeHouseMenuIterator(ArrayList items) {
            this.itemIterator=items.iterator();
        }

        @Override
        public boolean hasNext() {
            return itemIterator.hasNext();
        }

        @Override
        public Object next() {
            return itemIterator.next();
        }
    }
}

posted @ 2019-04-17 16:58  Fake_coder  阅读(102)  评论(0编辑  收藏  举报