# 迭代器模式

1.不假思索的思路：通过类和类之间参数的调用来实现最后结果。

class Application{        int n = 20;    int sum = 0;    public int getSum(){        return sum;    }}class Dummy extends Application{    public int Getsum1(){        int sum1 = 0;        this.n = n;        for(int i = 0;i <= n;i++){            if(i==n/2||i==n/5||i==n/6){             sum1++;             }        }        return sum1;    } }class Real extends Application{        public int Getsum(){        this.sum = sum;        this.n = n;        sum = n;                return sum;    }}public class Total {    public static void main(String args[]){                Dummy dy = new Dummy();        int s = dy.Getsum1();        Real rl = new Real();        int sum2 = rl.Getsum();        int sum0 = (sum2 - s)*100;        System.out.println("共有假币"+s+"张！");        System.out.println("真款共有"+sum0+"元");    }}

2.类Real的实用性很差，可以直接去掉。

3.继承和调用的次数过多，容易混乱。

4.new的对象名过多，容易混搅。

2.归纳阶段

public class Application {    public static void main(String args[]){                int n = 20;        int sum = 0;        Collection<RenMinMony> set = new HashSet<RenMinMony>();//集合对象        for(int i = 1;i <= n;i++){            if(i==n/2||i==n/5||i==n/6)                set.add(new RenMinMony(100,false));            else                set.add(new RenMinMony(100,true));        }        Iterator<RenMinMony> iterator = set.iterator();//迭代器        int jia = 1,zhen = 1;        System.out.println("保险箱共有"+set.size()+"张人民币");        int k = 0;        while(iterator.hasNext()){            RenMinMony money = iterator.next();            k++;            }        }        System.out.println("保险箱里有"+set.size()+"张是真币，总值是：");        iterator = set.iterator();        while(iterator.hasNext()){            RenMinMony money = iterator.next();            sum = sum + money.getValue();        }        System.out.println(sum+"元");            }}class RenMinMony{    int value;    private boolean isTrue;    RenMinMony(int value,boolean b){        this.value = value;        isTrue = b;    }    public boolean getIsTrue(){        return isTrue;    }    public int getValue(){        return value;    }}

1. 用户使用地带起访问集合中的对象，而不需要知道这些对象在集合重视如何表示以及储存的。
2. 用户可以同时使用多个迭代器遍历一个集合。
3. 减少了工作量，增加了程序的稳定性以及减小了程序的出错可能。

3.验证阶段：

public class Application {    public static void main(String args[]){                int n = 20;        int sum = 0;        Collection<RenMinMony> set = new HashSet<RenMinMony>();//集合对象        for(int i = 1;i <= n;i++){            if(i==n/2||i==n/5||i==n/6)                set.add(new RenMinMony(100,false));            else                set.add(new RenMinMony(100,true));        }        Iterator<RenMinMony> iterator = set.iterator();//迭代器        int jia = 1,zhen = 1;        System.out.println("保险箱共有"+set.size()+"张人民币");        int k = 0;        while(iterator.hasNext()){            RenMinMony money = iterator.next();            k++;            if(money.getIsTrue()==false){                System.out.println("第"+k+"张是假币，被销毁");                iterator.remove();                k++;            }        }        System.out.println("保险箱里有"+set.size()+"张是真币，总值是：");        iterator = set.iterator();        while(iterator.hasNext()){            RenMinMony money = iterator.next();            sum = sum + money.getValue();        }        System.out.println(sum+"元");            }}class RenMinMony{    int value;    private boolean isTrue;    RenMinMony(int value,boolean b){        this.value = value;        isTrue = b;    }    public boolean getIsTrue(){        return isTrue;    }    public int getValue(){        return value;    }}

抽象图:

posted @ 2010-12-15 16:46  天津城建学院软件工程  阅读(311)  评论(0编辑  收藏  举报