Design pattern — Dərs 1
Design pattern nədir
Design pattern tez tez qarşı-qarşıya gəldiyimiz və bir birinə oxşar problemləri həll etmək üçün ümumi olaraq qəbul olunmuş strukturlardır. Bu design patternlər ən optimal üsul olaraq qəbul edilir. Çünki illərlə istifadə edilib, test edilib və ən doğru yolun bunlar olduğu qəbul edilib. Bu design patternlər kodun rahat başa düşmək, sonradan ortaya çıxan dəyişikləri rahat şəkildə edə bilmək, yazılan kodların təkrarlanmasından qaçmaq, yazılan kodların bir çox yerdə istifadə oluna bilməsini təmin etmək və s üçündür. Bir kod stukturunda problem olduğunu görmək üçün 4 şeyə baxmaq lazımdır.
1. Ridigity (Dəyişilməzlik) — Yəni yazdığımız proqramda yeni bir dəyişiklik lazım olduqda bu bizə çox çətin başa gəlir. Kiçik bir dəyişiklik kodun bir neçə yerində dəyişiklik etməyə məcbur edir bizi. Base classda olan edilməli olan xırda bir dəyişiklik bizi child classlarda da dəyişikliklər etməyə məcbur edir. Əgər belə bir hal yaranarsa yazdığımız kodda problem var.
2. Fragility (kövrəklik) — Bu o deməkdir ki kodlar elə yazılıb ki bir yerdə dəyişiklik edirik və bu dəxlisiz bir çox yerə təsir edir.
3. Immonility (hərəkətsizlik) — Kodun sabit yerdə işlənməsi, başqa modullarda işlənə bilməməsidir. Bu da bizi məcbur edir ki eyni kodu ayrı ayrı modullarda təkrar yazaq.
4. Viscosity — Koddakı bəzi problemlər düzəldilməyə çalışarkən kodun ümumi strukturundan kənara çıxıb bəzi xüsusi yanaşmalar etməkdir.
Bu problemlərin olmaması üçün SOLİD dizayn prinsiplərinə əməl edillməlidir. SOLİD 5 prinsipdən ibarətdir və SOLİD sözü bu prinsiplərin baş hərflərindən düzəlib. Bu prinsiplər aşağıdakılardır. Bu məqalədə bu prinsiplər haqqında yazılmayacaq ətraflı internətdə bir çox yerdə oxumaq olar.
1. The Single Responsibility Principle
2. The Open Closed Principle
3. The Liskov Substitution Principle
4. The Interface Segregation Principle
5. The Dependency Inversion Principle
Bütün design patternlər bu 5 dizayn prinsipinə sadiq qalaraq standartlaşdırılmışdır. Növbəti məqalalərdə bu design patternlərə ayrıca baxılacaq.
Design patternlər 3 kateqoriyaya ayrılır. Bu design patternlərdən ən çox işlədilənləri bunlardır.
1. Creational patterns — Obyekt yaratmaq üçün istifadə olunur.
Abstract Factory
Builder
Factory Method
Prototype
Singleton
2. Structural patterns — Strukturdakı çətinliyi minimuma endirmək üçün istifadə olunur.
Adapter
Brigde
Composite
Decorator
Extensibility
Facade
Flyweight
Pipes and Filters
Private Class Data
Proxy
3. Behavioral patterns — Obyektlərin davranışlarını dəyişdirmək tələb olunduğunda istifadə olunur.
Chain of Responsibility
Command
Hierarchical Visitor
Interpreter
Iterator
Mediator
Memento
Null Object
Observer
Protocol Stack
Scheduled-Task
Single-Serving Visitor
Specification
State
Strategy
Template Method
Visitor