Factory Pattern and Abstract Factory Pattern

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 obyektidir.
Eger bu veziyyetin eksine, yeni bu obyektleri elde etmek uchun direkt olaraq Classin ozune muraciet etseydik. Bu zaman, proyektde butun bu hisseleri deyishdirmek lazim geleecekdir.  

Abstract Factory Pattern

Bu pattern prinsip olaraq eyni ishleyir, sadece geriye Factory return edir. Tutaq ki , bizde bir nece Factory classi var . AFP vasitesile ile bu classlarin hansini obyektini elde etmek lazimdir onu teyin edirik, daha sonra elde etdiyimiz Factory vasitesile hansi classin obyekti lazimdi teyin edib geriye return edirik.
Ustun cehetler eynidir.

Dezavantaj : ayri ayri factory-ler olmagina baxmayaraq, onlarin obyektlerini elde eden zaman, diger factory metodlarina da chatmaq olur.

Comments

Popular posts from this blog

Validation for AZ phone numbers with RegEx in Java

Java necə işləyir, kod nədir ?