设计模式 -- 迭代器模式

迭代器模式 – 舔狗

首先定义舔狗对象

public class Flatterer {
    public Flatterer(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    private String name;
    private Integer age;
    // Getter Setter    
}

其次定义女神及实现

public interface Goddess {
    void addFlatterer(Flatterer flatterer);

    void removeFlatterer(Flatterer flatterer);

    FlattererIterator getFlattererIterator();
}

public class FemaleSeaKing implements Goddess {
    private List<Flatterer> flattererList;

    public FemaleSeaKing() {
        this.flattererList = new ArrayList<>();
    }

    @Override
    public void addFlatterer(Flatterer flatterer) {
        flattererList.add(flatterer);
    }

    @Override
    public void removeFlatterer(Flatterer flatterer) {
        flattererList.remove(flatterer);
    }

    @Override
    public FlattererIterator getFlattererIterator() {
        return new FlattererIteratorImpl(this.flattererList);
    }

    public void showFlattererNameList() {
        System.out.println("舔狗名单:");
        FlattererIterator flattererIterator = this.getFlattererIterator();
        while (!flattererIterator.isLastFlatterer()) {
            Flatterer flatterer = flattererIterator.nextFlatterer();
            System.out.println(flatterer.getName());
        }
    }
}

最后定义舔狗迭代器及实现

public interface FlattererIterator {

    /**
     * 下一个舔狗
     */
    Flatterer nextFlatterer();

    /**
     * 是否是最后一个舔狗
     */
    boolean isLastFlatterer();
}

public class FlattererIteratorImpl implements FlattererIterator {

    private List<Flatterer> flattererList;

    private int position;

    private Flatterer flatterer;

    public FlattererIteratorImpl(List<Flatterer> flattererList) {
        this.flattererList = flattererList;
    }

    @Override
    public Flatterer nextFlatterer() {
        System.out.println("第" + (position + 1) + "个舔狗。");
        flatterer = flattererList.get(position);
        position++;
        return flatterer;
    }

    @Override
    public boolean isLastFlatterer() {
        if (position < flattererList.size()) {
            return false;
        }
        return true;
    }
}

测试类

public class Test {
    public static void main(String[] args) {
        FemaleSeaKing femaleSeaKing = new FemaleSeaKing();
        femaleSeaKing.addFlatterer(new Flatterer("张三", 25));
        femaleSeaKing.addFlatterer(new Flatterer("李四", 25));
        femaleSeaKing.addFlatterer(new Flatterer("王五", 25));
        femaleSeaKing.addFlatterer(new Flatterer("赵六", 25));
        femaleSeaKing.addFlatterer(new Flatterer("孙七", 25));
        femaleSeaKing.addFlatterer(new Flatterer("王八", 25));

        femaleSeaKing.showFlattererNameList();
    }
}

运行效果

舔狗名单:
第1个舔狗。
张三
第2个舔狗。
李四
第3个舔狗。
王五
第4个舔狗。
赵六
第5个舔狗。
孙七
第6个舔狗。
王八
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值