Builder Pattern
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 problemin qarshisini almaq uchun Image classini, ImageBuilder classinin terkibine salmaliyiq ve constructoru ve set get metodlarini private etmeliyik. Bu zaman, Image class ni qiragda yaratmaq mumkun olmayacaq.
Bu zaman bashqa bir ustunlukde var ki, artiq yaranan obyekt immutable olacaq.
Bundan bashqa, bu prosesin eksini de etmek olar. Yeni ImageBuilder classimizi Image classinin daxiline atiriq.
2ci usul daha uygun hesab edilir. Bu usulda , set metodlarina ehtiyac yoxdur. Chunki hemin classin daxilide hemin deyishenleri gore bilirik.
Comments
Post a Comment