Posts

Showing posts with the label Design Patterns

Factory Pattern and Abstract Factory Pattern

Image
Factory Pattern Tutaq ki, Shape interface var ve daxilinde draw() deye bir metod var. Rectangle , Circle, Square classlari ise bu interfaceden implements edir. ShapeFactory deye bir class var ve bu class vasitesile lazim olan classlarin obyektlerini elde ede bilirik. Bu class daxilinde getShape deye bir metod var ve bu metod Shape type i String olaraq alir ve Stringe uygun olaraq muxtelif obyekti qaytarir. Polimorfizme alinan obyekti Shape interface nin obyektine set ede bilirik. draw metodunu cagirmaqla elde etdiyimiz obyektin draw metodunu istifade edirik. Ustun ceheti bundan ibaretdir ki, meselen proyektde Square classi daha sonradan istifadeye yararli olmadi ve Square2 adli bir class yaratdilar. Bizim deyishiklik lazim olan hisse yalniz ShapeFactory de SQUARE String i gelen zaman geriye new Square2(); obyekti return elemek olacaq. Ve evvel istifade olunan yerlerde hiss olunmaycaq ki, hal hazirda istifade etdkleri obyekt Square classinin yox, Square2 classinin ...

Proxy Pattern

Image
Proxy pattern Bir obyekti temsil eden bashqa bir obyekt nezerde tutulur bu patternde. Her hansi bir tehlukesizliyin qarshisi alinmir, sadece Proxy uzerinden lazim olan obyekte chatiriq ve bu cache sistemi ile gedir. Tutaq ki, DB ya qoshulmaq uchun uzun bir vaxt teleb eden configrationlardan ibaret olan class var: HeavyConnector. Normalda bu classdan obyekt yaradan kimi bu DB ile elaqe hal hazirda lazim oldu ve ya olmadi yaranir. Bu da proyektin gec ishlemesine sebeb ola biler. Buna gore Proxy anlayishindan istifade olunur. Artiq Connector interface den istifade edib, polimorfizme gore ProxyConnector classinin obyektini yaradib Connector obyektine set ede bilerik. Connector connector = new ProxyConnector(); bu setirde yalniz ProxyConnector obyekti yaranacaq. heavyConnect metodu hele cagrilmayib. Yalniz connector.connect(); dedikden sonra HeavyConnector classinin obyekti yaranacaq ve constructor vasitesile bu metod cagrilacaq.

Builder Pattern

Image
Builder Pattern (StringBuilder misal gostermek olar) Tutaq ki, her hansi bir class-miz var ve bu class daxilinde bir neche deyishen movcuddur (5,10 ve daha chox). Obyekti yaratmaq uchun constructora ehtiyac duydugumuzdan, her bir deyishen ve kombinasiyaya uygun constructor yaratmaliyiq. Bu da uygun yol sayilmir. Misal, tutaq ki, Image class var ve bu class in deyishen sayi choxdur. Constructorlarin sayi artmasin deye ImageBuilder tetbiq edirik. ImageBuilder ozunde Image obyektini saxladir ve ImageBuilder Constructoruna muraciet eden zaman, Image obyekti yaranir. Image parametrlerine uygun olaraq set medolari olur ve her defe yaratdigimiz Image obyektine parametrleri set edib ImageBuilder i geri qaytaririq. Sonda ish bitdikden sonra, build metodu vasitesi ile, Image obyektini elde edirik. Problem Bele bir sual meydana chixir ki, eger Image classinin constructoru ve set get metodlari publicdise, niye ImageBuilder classindan istifade etmeliyik ?  Bu pro...

Singleton Pattern

Image
  Singleton Pattern   Tutaq ki, proyektimizde her hansi bir class var ve bu class in obyektinin yalniz bir defe yaranmagini isteyirik. Misal getirek, meselen bir Connector classimiz var ve bu class ne qeder obyekti yaransa bele eyni ish gorur. Buna gore proyekt daxilinde yalniz bir defe yaradilmagi bes edir. Constructor mutleq private olmalidir , eks halda ayri bir class yaradib, Connector classindan extends edib, hemin yaradilan classin obyektini polimorfizm gore Connector obyekti kimi yaradib istifade etmek olar.