Prototype Design Pattern

Büyük,karmaşık, resource kullanımı oldukça fazla olan nesneler ile çalışıyorsak bu nesneleri defalarca new ile yeniden yaratma maliyeti çok fazla ise, nesneler arası alanların kopyalanması gerekiyorsa faydalı olabilecek bir pattern Prototype.

Neden önemli bu pattern çünkü bir uygulama geliştirirken maliyetler çok önemli,nesnelerin üretilme maliyeti de tabii ki öyle. İşte Prototype pattern ile nesnenin tipinin ne olduğunu bilmeden elimizdeki bir nesnenin kopyasını alabiliyoruz.

Bu pattern’i işlerken 2 farklı nesne kopyalama yöntemini inceleyeceğiz: Shallow Copy, Deep Copy.

İlk başta shallow kopyalama tekniği ile prototype tasarım desenini inceleyeceğiz.

Prototype tasarım deseninde 3 nesne yapısı vardır.

  • Prototype: Klonlama yapılacak sınıfların uygulaması gereken interface veya abstract sınıf.
  • Concrete Prototype: Klonlama özelliği olacak gerçek sınıflar.
  • Client: Klonlanmış nesneyi elde edecek nesne.

Shallow Copy:

Nesnenin üye elemanlarını kopyalar. Eğer bu üye eleman Değer tipinde ise bit bit kopyalama işlemi gerçekleştirilir. Eğer üye eleman referans tipinde ise referans kopyalanır fakat referansın gösterdiği veri kümesi kopyalanmaz. Orjinal nesne ve Kopyalanmış nesnede yer alan referans tipi üye eleman bellekte aynı veri kümesine işaret eder. Kopyalama işlemi static üye elemanları için geçersizdir.

Deep Copy:

Nesnenin bütün değer ve referans üye elemanlarını bit bit kopyalama işlemine denir. Deep copy işlemini kendimiz yazmamız gerekmektedir. Deep copy için .Net in sunduğu herhangi bir sınıf metod bulunmamaktadır.

Tecrübelerimi not aldığım bloğum 📄📌

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Çağlar GÜL

Çağlar GÜL

elektrik-elektonik mühendisi | yazılıma ve tasarıma meraklı | araştırmayı ve paylaşmayı seven | blogger ve oyun sevdalısı

More from Medium

WHITEROPHIC

BEING POLITE AND GRATEFUL

Battling Misinformation In The COVID Era