1. Anasayfa
  2. ASP.Net

Tasarım Desenleri Yazı Dizisi – Bölüm 4 – Prototype Tasarım Deseni (Prototip)


0

Creational Patterns (Yaratıcı Tasarım Desenleri) grubu altında yer alan Prototype tasarım deseni üretilmek istenen bir nesnenin var olan farklı bir nesneden kopyalanması ile üretilmesini sağlamaktadır.

Peki neden böyle bir şeye ihtiyacımız var?

Bazı nesnelerin New operatörü ile oluşturulmasının maliyetli (bellek alanı, oluşturulma süreci vs.) olduğu durumlar söz konusu olabilir. İşte bu gibi durumlarda var olan bir nesnenin kopyasının alınması her zaman daha az maliyetli olacak ve bizlere zaman + performans kazandıracaktır.

Bu durumu şu şekildeki bir senaryo ile daha kolay kavrayabiliriz.

Var olan bir web sitemizde bulunan üyelerimize ait ad, soyad ve üyelik tipini tanımlayabileceğimiz ve bu bilgileri bir listede tutarak ekrana yazdırabileceğimiz bir senaryomuzun olduğunu düşünelim.


Resim-1

Bu durumda tüm üyelerimize ait oluşturulacak nesnenin yapısal özellikleri aynı sadece içerikleri farklı olacaktır. Bu da aynı nesneden sürekli yeni oluşturmamız yerine var olan bir nesneyi MemberwiseClone metodu ile kopyalayarak sadece içeriklerini değiştirmemizle işimizi çözebilmemizi sağlayacaktır.

Şimdi belirtmiş olduğumuz bu yapımızı Prototype Tasarım Deseni ile tasarlayalım.

İlk yapmamız gereken Uyelerimizi tanımlayabileceğimiz Class’ımıza ait Prototipi belirten Abstract Class’ını tasarlamaktır.


Resim-2

Prototipe ait Class içerisinde bulunan Abstract türündeki Kopyala adlı metodumuz geriye Prototip tipinden bir değer döndürmektedir. Bu sayede Prototip Class’ımızdan miras alan Class’ların, Prototip Class’ımızın Abstract olması sebebiyle New ile yeni bir nesne oluşturulamayacağından dolayı kendisinin geriye döndürülmesini sağlayacaktır.

Prototip tanımımızı yaptıktan sonra artık üyelerimize ait bilgilerin tutulacağı sınıfımızı tasarlayabiliriz.


Resim-3

Uye sınıfımızda miras aldığımız Prototipimiz içerisinde bulunan Abstract türündeki Kopyala metodunu ezerek içerisinde sınıfı tüm özellikleriyle kopyalamayı sağlayan MemberwiseClone metodunu kullandık. Ancak MemberwiseClone metodu Object tipinden veri döndürdüğü için ve bizim döndürmemiz gereken tip Class’ın kendi tipi olması gerektiğinden dolayı as Uye komutu ile bu problemi çözüyoruz.

Artık üyelerimize ait tanımı yapabilir ve belirtmiş olduğumuz listemizi hazırlayabiliriz.


Resim-4


Resim-5

Hazırladığımız tasarım desenimiz sayesinde yeni üye tanımlarında New anahtar sözcüğünü kullanmamıza gerek yoktur. Bunun yanında yeni malzeme ve yeni ürün ekleme işleminde tek yapmamız gereken Yeni eklediğimiz tipin portatif sınıfı miras alması ve kopyala metodunun ezilerek sınıfa ait tipin döndürülmesidir.

Bu makalede kullanılan tasarım desenine ait kodu indirmek için buraya tıklayın. Dosyanın şifresi : mshowto.org.

Referanslar

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 1
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

1981 İstanbul doğumlu Erkan KİLMEN. Programlamayla ilk olarak 2002 Yılında Visual Basic ile başlamıştır. Daha sonrasında bu dilin kendisine yetersiz olduğunu düşünerek Visual C++ ile programlama bilgisini daha ileriye taşımıştır. 2004 yılında .NET teknolojisiyle tanışmış ve bu dile merak sarmıştır. Halen Microsoft'un yeni vizyonu olan .NET teknolojileri üzerine çalışmalarını sürdürmektedir.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir