目录

行为型:迭代器模式

释义

迭代器模式,迭代,即顺序访问对象集合。

/%E8%A1%8C%E4%B8%BA%E5%9E%8B%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F/%E8%A1%8C%E4%B8%BA%E5%9E%8B%EF%BC%9A%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F.resources/1562A181-F2A5-4FE5-BC57-2BE7CBCF7424.png
迭代器模式

迭代器容器Container用于获取迭代器Iterator

迭代器

1
2
3
4
interface Iterator {
    fun hasNext(): Boolean
    fun next(): Object
}

迭代器容器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
interface Container {
    fun getIterator(): Iterator
}

class UserContainer(
    val users: MutableList<String>
) {

    public fun getIterator(): Iterator {
        return object : UserIterator()
    }
    
    private class UserIterator(
        var index: Int = 0
    ): Iterator {
    
        override fun hasNext() {
            if(index < users.length) {
                return true
            }
            return false
        }
        
        override fun next(): String? {
            if(this.hasNext()){
                return users[index++];
            }
            return null;
        }
    }
}

使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
fun main() {
    // 创建数据源
    val users: MutableList<String> = mutableListOf(
        "名称1","名称2"
    )
    // 创建迭代器容器
    val container: Container = UserContainer(users)
    // 从容器中获取迭代器
    val iterator: Iterator = container.getIterator()
    
    // 迭代
    for(item in 0..users.size) {
        if(!iterator.hasNext()) {
            break;
        } else {
            iterator.next()
        }
    }    
}