Open mustafaskilic opened 1 year ago
Selamlar @mustafaskilic,
Bu issue'u yeni görüyorum, geç oldu gibi kusura bakma lütfen. Güzel düşüncelerin için de çok teşekkür ediyorum.
İç içe referans tipleri olduğunda dediğiniz senaryo olabilir, evet. Döküman boyunca verilen örneklerde primitive veri tipleri olduğu için belki göze çarpmamış olabilir ama iç içe referans tipler olduğunda da dikkat etmek gerekebilir. Burada birkaç çözüm var gibi:
IClonablePrototype<Employee>
uygulamak) fakat burada her zaman müdahale edebileceğimiz bir yapı ile de karşılaşamayabiliyoruz. Örneğin kullandığımız 3th party library'e ait bir sınıfa direkt müdahale edemiyoruz.clone
metotuna ait implemetasyon'un değiştirilmesi.Öncesi:
public class Employee implements IClonablePrototype<Employee> {
String firstName;
String lastName;
public Employee(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public Employee clone() throws CloneNotSupportedException {
return (Employee) super.clone();
}
}
Sonrası:
public class Employee implements IClonablePrototype<Employee> {
String firstName;
String lastName;
public Employee(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public Employee clone() throws CloneNotSupportedException {
return new Employee(firstName, lastName);
}
}
gibi. Bu döküman kapsamında şu anki halinin de bir problemi görünmüyor ama dediğiniz senaryoda problem yaratabilir. Döküman da 2. yönteme göre de düzenlenebilir. Dilerseniz bu kısımları PR göndererek katkıda da bulunabilirsiniz.
Merhaba hocam; Hazırladığınız bu dokümantasyondan oldukça faydalanmaktayım, sunduğunuz bilgi paylaşımı için teşekkür ediyorum. Prototype Design Pattern ile ilgili birkaç araştırma daha yaptım. Ve anladığım kadarıyla verdiğiniz örnek şu an aslında
Shallow Copy
yapmakta. Employee class' ına property olarak bir class verdiğimizde bu anlaşılmış olacak.Program.cs'de şu şekilde
Şu şekilde modeli revize edersek
Deep Copy
' e ulaşırız.