Tasarım Desenleri — Bölüm 4

Merhaba arkadaşlar, bugün tasarım desenleri serimizde bölüm 4 olan Prototype Pattern’ini inceleyeceğiz. Klasik olarak önce patterni anlatmaya çalışacağız daha sonrada örnekle pekiştireceğiz.

Prototype pattern, Creational Patterns altında yani nesnenin oluşması ile ilgili olan tasarım desenlerinde yer alır. Dofactory.com’a göre orta seviye kullanım sıklığı bulunmaktadır. Kısaca nesnenin bir prototipten kopyalanarak oluşmasını sağlar. Peki bu pattern neden kullanılır?
Prototype pattern genel olarak nesnelerin üretim maliyetini azaltarak, geliştirme ve performans kriterlerinde avantaj sağlamak için kullanılır.

Shallow Copy ve Deep Copy olmak üzere iki tür nesne kopyalama işlemi bulunmaktadır. Bunlardan kısaca bahsetmek gerekirse ;

Shallow Copy : Yeni bir nesne üretilmemekte, nesnenin bellekteki referansı üzerinden işlem yapılmaktadır.

Deep Copy : Nesne birebir kopyalanmakta ve farklı referanslar üzerinden işlem yapılabilmektedir.

Gelelim patternimizin UML diyagramına;

Image for post
Image for post
dofactory-prototype

Prototype: Nesnenin kopyalanmasını sağlayan Clone metodunu barındıran soyut sınıf.
ConcretePrototype: Patternnin uygulanacağı nesnelerdir.
Client: Patternin kullanımını talep edecek istemci.

Şimdi bunu somut bir örnekle pekiştirelim. Örneğimizde takım nesnemizi Prototype Pattern kullanarak üreteceğiz.

public interface ITeam //Prototype interface
{
ITeam Clone();
string GetTeamInfo();
}

Evet arkadaşlar bu hafta size Prototype Patternini anlatmaya çalıştım. Umarım faydalı olmuştur.
Herkesin Ramazan ayını kutlarım kalın sağlıcakla… 😀

Kaynak Kod => https://github.com/EnesAys/DesignPatterns

Kaynaklar

http://enesaysan.com/software/tasarim-desenleri-bolum-4/
https://www.dofactory.com/net/prototype-design-pattern
https://www.gencayyildiz.com/blog/c-prototype-design-pattern-prototip-tasarim-deseni/
https://refactoring.guru/design-patterns/prototype/csharp/example
https://www.dotnettricks.com/learn/designpatterns/prototype-design-pattern-dotnet

Software Developer at Sosyopix

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