دیزاین پترن Iterator از دسته رفتاری در مجموعه ۲۳ پترن مشهور Gang of Four است. اجازه میدهد عناصر یک مجموعه بدون دانستن ساختار داخلی آن، یکییکی پیمایش شوند.
سناریوی واقعی در فروشگاه
API محصول ممکن است هزاران رکورد را صفحهبهصفحه تحویل دهد و Iterator آنها را به Stream مصرفکننده تبدیل کند.
نمونه در PHP
function products(): Generator {
foreach (Product::query()->cursor() as $product) {
yield $product;
}
}
foreach (products() as $product) { /* process */ }
نمونه در پایتون
def products(api):
page = 1
while batch := api.list_products(page=page):
yield from batch
page += 1
چه زمانی مناسب نیست؟
نگهداری یک Cursor باز به مدت طولانی میتواند منابع دیتابیس را مصرف کند.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.