Iterator Pattern

آموزش الگوی طراحی ایتریتور iterator design pattern android اندروید java جاوا oop برنامه نویسی شی گرا

سطح آموزش: #متوسط

یکی از ساختمان داده‌های مطرح مطرح و پرکاربرد تو برنامه‌نویسی Collection هست. collection یعنی آبجکتی که میتونه رفرنسی از یک آبجکت دیگه رو نگهداری کنه. این کالکشن یا مجموعه میتونه هرچیزی باشه. یک لیست، آرایه، صف، پشته، درخت یا هر چیز دیگه.

توی collection ما کار نداریم ساختار داخلی چیه یا چه نوع objectـی داریم و فقط نیاز به یک راهی داریم که بتونیم به المان‌های دیگه داخل مجموعه دسترسی داشته باشیم.

واژه Iterate به معنی تکرار کردن هست. توی iteration ما نیاز به ساختاری داریم که object فعلی رو نگهداریم و در عین حال بدونیم object بعدی چیه.

قبل از اینکه وارد پیاده‌سازی بشم میخوام با واژه aggregate هم آشنا بشید. aggregate به مجموعه‌ای از اشیاء میگن که کنار هم باشن. وقتی ما یک iterator داریم، یعنی یک مجموعه‌ای از اشیاء رو داریم (به طور تئوری البته چون هر مجوعه‌ای میتونه تهی هم باشه) که یکسری ویژگی دارن (آگاه بودن از عنصر بعدی). بنابراین aggregation یا تجمع داریم.

Iterator Design Pattern چیست؟

iterator الگوییه که به ما اجازه دسترسی و پیمایش یک تجمع از اشیاء رو میده بدون اینکه کل مجموعه رو افشا کنه (بر خلاف مثلا ArrayList که کل مجموعه رو در اختیار میذاره)

بنابراین ما نیاز به ساختاری برای حرکت در طول مجموعه داریم.

دیاگرام چنین ساختاری شکل زیر میشه:

iterator design pattern class diagram android

Iterator

  • اینترفیسی برای دسترسی و پیمایش داده‌ها

ConcreteIterator

  • اینترفیس iterator رو پیاده‌سازی میکنه
  •  موقعیت objectـی که روش هستیم(در طول پیمایش) رو نگهداری می‌کنه.

Aggregate

  • اینترفیسی برای ساخت iterator

ConcreteAggregate

  • پیاده سازی اینترفیس ساخت iterator. در اصل یک ConcreteIterator بر میگردونه.

پیاده‌سازی دیزاین پترن Iterator

اول یک کلاس از Object خودمون طراحی می‌کنیم:

کلاس ObjectStorage همونجوری که از اسمش معلومه مجموعه‌ای از Objectهاست:

دو تا متد ساده هم داره که برای اضافه کردن object جدید و گرفتن تمام objectها ازش استفاده میشه.

در ادامه کلاس Iterator رو پیاده سازی میکنیم.

جاوا خودش interface مربوط به iterator رو داره برای همین کافیه اون رو import کنیم و توی کلاس mObjectIterator متدهاش رو override کنیم. حتما متوجه شدید که mObjectIterator همون ConcreteIterator هست که بالاتر گفتم.

در نهایت یک کلاس تست می‌نویسیم تا کارکرد Iteratorمون رو ببینیم:

کد

با اجرای این تکه کد جاوا خروجی زیر رو خواهیم داشت:

 

پی‌نوشت۱: برای این پست من از منابعی که در ادامه میگم استفاده کردم. برای مطالعه بیشتر توصیه میکنم سری به لینک‌ها بزنید:  +  +  +

پی‌نوشت۲: بعضی وقتا که من از کدهای سایت‌های دیگه استفاده میکنم در عین حالی که به اون سایت لینک میدم ولی کد رو هم یک مقدار تغییر میدم. دلیل اینکار اینه که موتورهای جستجو خیلی حساس هستن به اینکه سایت‌ها مطالب رو از همدیگه کپی نکنن. و اگر این کارو کنن توی رتبه سایت تاثیر منفی زیادی داره. کدهای این آموزش هم از سایت javacodegeeks گرفتم و تغییراتی دادم.

6 دیدگاه برای “Iterator Pattern

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *