Obje oluşturmada kullanılan Prototype design pattern ile yeni yazıma başlıyorum değerli dostlar. Aslında amaç ve mimari olarak çok basit bir kalıp ile karşı karşıyayız. Buradaki temel amaç hemen hemen veya tamamen birbirinin aynı objeleri oluşturmak. Genelde clone yöntemi üzerinden gidilmektedir. Bazı ufak tefek özellikler ile kendinize göre geliştirme yapabilirsiniz. Çok uzatmadan koda geçmek istiyorum ve öncelikle yine interface sınıfımız.

package designpattern.prototype;public interface IProtoype {public T clone();}
package designpattern.prototype;public class BasicPrototype implements IProtoype, Cloneable {private String color = “”;public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

@Override
public BasicPrototype clone() {
BasicPrototype newInstance = null;

try {
newInstance = (BasicPrototype) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}

return newInstance;
}

}

package designpattern.prototype;import java.util.ArrayList;
import java.util.List;public class ListPrototype implements IProtoype, Cloneable {private List colorList = new ArrayList();

public List getColorList() {
return colorList;
}

public void setColorList(List colorList) {
this.colorList = colorList;
}

@Override
public ListPrototype clone() {
ListPrototype newInstance = null;

try {
newInstance = (ListPrototype) super.clone();
newInstance.getColorList().clear();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}

return newInstance;
}

}

package designpattern.prototype;public class PrototypeMain {public static void main(String[] args) {IProtoype b1 = new BasicPrototype();
((BasicPrototype) b1).setColor(“blue”);

BasicPrototype b2 = b1.clone();
System.out.println(b2.getColor());

IProtoype l1 = new ListPrototype();
((ListPrototype) l1).getColorList().add(“blue”);

ListPrototype l2 = l1.clone();
System.out.println(l2.getColorList().size());

}

}

blue
0

İlk clone işlemi size oldukça tanıdık gelecektir. Aynı şekilde ikinci clone işlemi de aynı; fakat ek olarak liste temizleme gibi bir işlem daha yaptık. Toparlarsak prototype design pattern ile amaç birbirine benzer objelerin oluşturulma sürecini kısaltmak.

Bol Java’ lı günler dileğiyle… 😀

No responses yet

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.