利用迭代器模式实现统一数据访问接口
时间: 2023-05-24 19:01:15 浏览: 84
非常感谢您的提问!迭代器模式是一种常见的设计模式,它可以将数据结构和数据遍历分离,从而实现统一的数据访问接口。实现迭代器模式的关键在于定义一个迭代器接口,以及对应的具体迭代器实现。下面是一个简单的示例代码:
```
-- 定义迭代器接口
local Iterator = {}
function Iterator:hasNext()
end
function Iterator:next()
end
-- 定义具体的迭代器实现
local ArrayIterator = setmetatable({}, {__index = Iterator})
function ArrayIterator:new(array)
local obj = {array = array, index = 0, size = #array}
setmetatable(obj, {__index = ArrayIterator})
return obj
end
function ArrayIterator:hasNext()
return self.index < self.size
end
function ArrayIterator:next()
self.index = self.index + 1
return self.array[self.index]
end
-- 使用迭代器访问数组
local array = {1, 2, 3, 4, 5}
local iterator = ArrayIterator:new(array)
while iterator:hasNext() do
local value = iterator:next()
print(value)
end
```
这段代码定义了一个 Iterator 接口和一个 ArrayIterator 具体实现,并演示了如何使用迭代器访问数组。首先创建一个迭代器对象,然后使用 while 循环不断调用 hasNext 和 next 方法,就可以访问数组中的每一个元素了。希望这个回答能帮到您!