Factory Method
Xondamir Abduxoshimov
Last updated
Xondamir Abduxoshimov
Last updated
Creational Patternlar obyekt yoki tegishli obyektlar guruhini yaratishdagi ba'zi bir muammolarni yechishda foydalaniladi. Bu patternlar 5 tani tashkil qiladi:
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Demak, o'rganishni Factory Method patterni bilan tanishish orqali boshlaymiz.
Factory Method dizayn patterni obyekt yaratilish jarayonini abstrakt(mavhum)lashtirib, run-time paytida qachonki extiyoj sezilganda obyektni yaratilishiga imkon yaratadi. Dasturchilar ushbu patterni odatda obyekt yaratishning standart usuli sifatida foydalanishadi. Keling berilgan factory method patterniga yanayam sinchikovlik bilan yondashamiz.
Factory Method = FM
Biz FMdan foydalangan holda obyektni uning yaratilish logikasini yashirgan holda hosil qilamiz. Ya'ni, obyekt yaratish uchun interfeysdan foydalaniladi, lekin voris class qaysi class obyekti yaratilishini belgilaydi.
Albatta sizga berilgan ma'lumotlar birdaniga tushunarsiz bo'lishi mumkin, men ham bir o'qishda o'rgana olmaganman. Lekin ko'proq misollar orqali ko'rsangiz buni tushunish osonroq kechadi.
Quyidagi ko'rsatilgan UML diagramma, FMni qanday tashkil etilishini belgilaydi.
Yuqoridagi diagramma elementlari nimani anglatadi birma - bir tahlil qilib chiqamiz:
Product - obyektlarni yaratish uchun interfeys.
ConcreteProduct - Product interfeysini implement qiluvchi sinf.
Creator - Product obyektini qaytarib beruvchi FMni aniqlovchi abstrakt sinf.
ConcreteCreator - Creator sinfidan olingan voris sinf.
Misol:
Tasavvur qiling bizda transport vositalari bor va biz ularning bosib o'tgan masofalarini foydalanuvchiga ko'rsatmoqchimiz. Ho'sh ushbu holatda FMni qanday tashkil etamiz.
Natija:
Endi asosiy nuqtaga keldik. Ho'sh sizningcha ushbu pattern bizga qanday imkoniyatlar yaratib beradi.
Ba'zi dasturlash tillarida konstruktorlarda istisnolardan foydalanish yomon oqibatlarga olib kelishi mumkin. Bu muammolarni keltirib chiqaradi. FM bo'lsa bunga chek qo'yadi.
Qachonki konstruktorga murojaat qilganingizda, yaratiladigan obyekt turini aniq bilishingiz kerak. Bu har doim ham o'rinlik emas. Tasavvur qiling kompyuterga telfonizni ulamoqchisiz, lekin oldindan u qaysi uslubda kompyuteringizga ulanishini bilmayabsiz(Ethernetmi, COMmi yoki USBmi). Bu holatda FMni qo'llash ancha qulaylik beradi. Ya'ni, siz run-time paytida tanlovga ko'ra qaysi uslub mos kelishini aniqlashingiz mumkin.
O'ylaymanki aytib o'tilgan fikrlar sizga tushunarlik bo'ldi. Sayohatimizni davom ettiramiz.