zoukankan      html  css  js  c++  java
  • Iterator(迭代器模式)--(超市管理者)

    这个Iterator就是收银台干的活。

    package patterns.actions.iterator;
    
    public interface IteratorList {
    
    	boolean isEmpty();//是否还有[hasNext()]
    	
    	Object nextMerchandise();//merchandise:商品
     
    }
    
    package patterns.actions.iterator;
    
    /**
     * 收银台清点商品
     * @author one
     *
     */
    public class IteratorCheck implements IteratorList {
    	private Supermarket shop;
    	
    	private int total=0;
    	
    	private int current=0;
    	
    	IteratorCheck(Supermarket shop){
    		this.shop=shop;
    		this.total=shop.size();
    		this.current=0;
    	}
    
    	@Override
    	public boolean isEmpty() {
    		return this.current<this.total;
    	}
    
    	@Override
    	public Object nextMerchandise() {
    		if(this.current<this.total)
    			return this.shop.take(this.current++);
    		return null;
    	}
     
    }
    
    package patterns.actions.iterator;
    
    /**
     * 购物的基本要素
     * @author one
     *
     */
    public interface Shopping {
    
    	public void buy(Object obj);//买新的产品[add]
    	
    	public IteratorList iteratorList();//结账[iterator]
    	
    }
    
    package patterns.actions.iterator;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 超市提供具体的购物环境
     * 
     * @author one
     * 
     */
    public class Supermarket implements Shopping {
    	private List cart = new ArrayList();// 购物车作为容器
    
    	@Override
    	public void buy(Object obj) {
    		cart.add(obj);// 将商品放到购物车
    
    	}
    
    	@Override
    	public IteratorList iteratorList() {
    		return new IteratorCheck(this);
    	}
    
    	public int size() {
    		return this.cart.size();
    	}
    
    	public Object take(int current) {
    		if(current<this.cart.size())
    			return this.cart.get(current);
    		return null ;
    	}
    }
    
    package patterns.actions.iterator;
    
    public class Client {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Shopping cart = new Supermarket();
    		cart.buy("可乐");
    		cart.buy("果汁");
    		cart.buy("酸梅");
    
    		IteratorList check = cart.iteratorList();
    		while (check.isEmpty()) {
    			System.out.println(check.nextMerchandise());
    		}
    
    	}
    
    }
    


    输出结果:

    可乐
    果汁
    酸梅
    


  • 相关阅读:
    我的第一个Node.js项目
    map.keySet()获取map全部的key值
    sql语句的优化
    操作数据库的快捷键
    学习方法(准则)
    input输入框的readonly属性-----http://www.w3school.com.cn/tags/tag_input.asp
    Java反射机制(Reflect)解析-----https://www.cnblogs.com/fzz9/p/7738381.html
    java的动态代理机制详解-----https://www.cnblogs.com/xiaoluo501395377/p/3383130.html
    jQuery入门--- 非常好
    JQuery_九大选择器
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3310759.html
Copyright © 2011-2022 走看看