-
-
Notifications
You must be signed in to change notification settings - Fork 459
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prototype C# Örneği #39
Comments
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:
Ö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.The text was updated successfully, but these errors were encountered: