Dizayn Patternlar Dasturiy ta'minotni ishlab chiqishda qo'llaniladigan patternlar, dastur tuzish davomida muntazam ravishda uchraydigan muammolarga yechim topishda qo'llaniladi. Ushbu qonun - qoidalar faqat OOP(Obyektga Yo'naltirilgan Dasturlash) uchun amal qiladi. Ya'ni qoidalarni Funksional Dasturlashga qo'llash yaramaydi.
Dizayn Patternlar - dasturchi uchun muhim qurollardan biri hisoblanadi. Dasturchi injinerlarning, dizayn patternlarni qanday tashkil qilingani va uning aynan qaysi muammoni yecha olishligini bilishligi, patternlarni qanday sinflar, metodlar va maydonlardan tashkil etilganini eslab qolishdan ko'ra avzalroqdir. Chunki patternlarni yaratilishi(Implementatsiyasi), berilgan muammoga ko'ra tashkil etiladi.
Dizayn Patternlar bo'limida, Gang of Four(GoF) mualliflari tomonidan yaratilingan Design Patterns: Elements of Reusable Object-Oriented Software kitobida sanab o'tilgan patternlar to'g'risida so'z boradi.
Dizayn Patternlari maqsadiga ko'ra 3 turga bo'linadi:
Creational
Structural
Behavioral
Creational dizayn patternlar oilasi
1.Factory Method
2.Abstract Factory
3.Builder
4.Prototype
5.Singleton
1.Chain of Responsibility
2.Command
3.Interpreter
4.Iterator
5.Mediator
6Memento
7.Observer
8.State
9.Strategy
10.Visitor
11.Template Method
Factory Methoddizayn 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:
1.Product - obyektlarni yaratish uchun interfeys.
2.ConcreteProduct - Product interfeysini implement qiluvchi sinf.
3.Creator - Product obyektini qaytarib beruvchi FMni aniqlovchi abstrakt sinf.
4.ConcreteCreator - Creator sinfidan olingan voris sinf
FMni qachon foydalanamiz
Ho'sh sizningcha ushbu pattern bizga qanday imkoniyatlar yaratib beradi.
1.Ba'zi dasturlash tillarida konstruktorlarda istisnolardan foydalanish yomon oqibatlarga olib kelishi mumkin. Bu muammolarni keltirib chiqaradi. FM bo'lsa bunga chek qo'yadi.
2.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.
Barchaga xayrli kun, bugungi suxbatimizda Abstract Factorydizayn patterni qanday qilib C# dasturlash tilida implementatsiya qilinadi? va U qanday muammolarga yechim bo'la oladi? kabi savollarga javob topamiz. Agarda siz bundan oldingi Factory Method