// Iterator Interface
class Iterator {
    constructor(collection) {
        this.collection = collection;
        this.index = 0;
    }
    next() {
        const item = this.collection[this.index];
        this.index++;
        return item;
    }
    hasNext() {
        return this.index < this.collection.length;
    }
}
// Concrete Aggregate
class ListAggregate {
    constructor() {
        this.items = [];
    }
    addItem(item) {
        this.items.push(item);
    }
    createIterator() {
        return new Iterator(this.items);
    }
}
// Client code
const aggregate = new ListAggregate();
aggregate.addItem("Item 1");
aggregate.addItem("Item 2");
const iterator = aggregate.createIterator();
while (iterator.hasNext()) {
    console.log(iterator.next());
}
 
No comments:
Post a Comment