Prototype Design Pattern: Mevcut bir nesnenin klonlanması ile yeni bir nesne oluşturmayı sağlar. Bu pattern, nesnelerin türetilmesi maliyetli veya zor olduğunda kullanışlıdır. Özellikle, büyük nesne oluşturma maliyeti varsa veya nesnelerin durumu dinamik olarak değişiyorsa kullanışlı olabilir.
Kısacası bir nesnenin kopyasını almak için kullanılır. Nesnelerin belirli bir durumunu koruyarak yeni nesneler oluşturmayı sağlar. Bu, nesnenin yapısını veya içeriğini bilmeden yeni bir nesne oluşturmak için kullanışlıdır. Örnek verecek olursak;
public interface ProtoType {
ProtoType clone();
}
public class ConcretePrototype implements ProtoType {
private Integer value;
public ConcretePrototype(Integer value) {
this.value = value;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
@Override
public ProtoType clone() {
return new ConcretePrototype(this.value);
}
}
public static void main(String[] args) {
// ProtoType Design Pattern
protoTypeDesignPattern();
}
private static void protoTypeDesignPattern() {
ConcretePrototype prototype = new ConcretePrototype(10);
ConcretePrototype clone = (ConcretePrototype) prototype.clone();
System.out.println("Original value : "+ prototype.getValue()); // output: 10
System.out.println("Clone value : "+ clone.getValue()); // output: 10
prototype.setValue(20);
System.out.println("Original value after update : "+ prototype.getValue()); // output: 20
System.out.println("Clone value after update : "+ clone.getValue()); // output: 10
}
Örnekte, Prototype arayüzü, klonlama işlemini gerçekleştirmek için bir clone methodu içermektedir. ConcretePrototype classı, klonlanacak somut bir prototipi temsil eder ve clone methodunu çağırılır. Main sınıfında, bir prototip nesnesi oluşturup, bu nesnenin bir kopyası alınır. Ardından, orijinal ve kopya nesnelerin değerleri gösterir. Orijinal nesnenin değeri değiştirildiğinde, kopya nesnenin değeri değişmez çünkü kopya, orijinalin durumunu klonlama sırasında aldı. Bu örnek, Prototype design patternin nasıl çalıştığını göstermektedir.
Yorum Bırak