top of page

.Net ile Prototype Design Pattern

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • May 8, 2012
  • 2 min read

Bu yazimda sizlere yazilim tasarim desenlerinden birisi olan Prototype Design Pattern'dan bahsediyor olacagim. Fakat bu konuya baslamadan once, bahsetmek istedigim; bilindigi uzere bir cok design pattern bulunmaktadir. Kendilerine gore yazilimda bir cok probleme cozum olabilmesi icin olusturulmus tasarim kaliplaridir. Object Oriented programlama mantigina uygun olarak olusturulan bu tasarim kaliplari cok sik bir sekilde karsilasilan problemlere cozum olabilmesi icin en basarili yontem oldugu icin yazilim muhendisliginde onemli bir  rol almaktadir. Object Oriented programlama mantigi uzerinden dusunmeye devam edersek eger calistigimiz class'larin diger class'lar ile aralarinda ki bagin en aza indirilmesi gerektiginde veya programa yeni bir kod eklenmesi gerektiginde kullanilan kodlarin rahat bir sekilde anlasilmasi ve esnek bir sekilde algilaniyor olmasi gerekir. Iste bu ve bunun gibi durumlarda kullanacagimiz tasarim kaliplari ile yazilimimizin kalitesini arttirabiliriz.

Prototype Design Pattern

Yeni bir nesne olusturmak yerine daha onceden olusturmus oldugumuz nesneyi klonlayarak yeni bir nesne ornegi elde ederek kullanmamiz icin var olmus bir tasarim desenidir. Ozellikle de new operatoru ile olusturabilecegimiz her bir yeni gelen nesnenin olusum sayisini en aza indirmek amaciyla kullaniyoruz. Bir nevi her bir olusabilecek nesnenin yaratilis maliyetini azaltmis oluyoruz. Ayni zamanda sistemde var olan buyuk ve olusturulmasi zaman alabilecek nesnelerin varligi ile yine bu nesnelerin sinif icerisinde ki hiyerarsilerini kuculterek, kullanilabilecek sinif adedini de azaltabiliyoruz. Yani new operatoru ile surekli bir sekilde nesne yaratmayim klonlanmis halinden nesneleri set ediyoruz. Bu tasarim desenin diger faydalarindan bahsedecek olursam eger ; Uygulamalarinizin runtime esnasinda nesnenin kopyasi uzerinden devam etme imkaniniz olacaktir. Bu sekilde orjinal nesne kalibiniz saklaniyor olacak. Olusturdugunuz nesnelerin bircogunun ortak oldugu durumlarda, yeni  nesneniz oncekilerden kolonlanacaktir ve ek ozelliklerde guncel bir sekilde varligini surdurecektir.

                    Bu tasarim deseninde yukarida gordugunuz bilinen uml semasi ile konuyu anlatmaya devam edecegimden dolayi uml diagraminda ki siniflardan vede metodlardan bahsedecek olursam ; 3 yapi kullanilmistir. Prototype ; Bir interface veya abstract class olacak sekilde kullanilir. Icerisinde nesnelerimizde kolonlayabilecegimiz metodlar barindirilacaktir. ConcretePrototype ; Prototype nesnemizi implement edebilecegimiz bir class olacaktir. Haliye kolonladigimiz metoda da sahip olmak zorundadir bu yuzden Prototype class'in da ki kullandigimiz metodu ezmesi gerekecektir. Client ; ConcretePrototype' da olusturdugumuz nesnelerin kopyalari kullanmak icin talepte bulanacak olan istemci nesnemizdir.

Ek bir bilgi olarak bahsetmem gereken bir diger onemli nokta ise ; .Net'le birlikte gelen bir ozellik olan

MemberwiseClone

() metodunun kullanilmasinin vazgecilmezligidir. .Net icerisinde ki IClonable interface'i icerisinde bulunan

MemberwiseClone

() metodu, nesnelerimizin bire bir kopyasini olusturmamizda yardimci oluyor. Kendisi bellekte deep copy olayi ile yeni bir nesne olusturmaktadir. Simdi dilerseniz ufak bir uygulama ile paylasmis oldugum bu bilgileri biraz daha detayli bir sekilde inceleyelim... Oncelikle sizlere olusturacagim uygulamanin Uml diagrami olan Class diagramini paylasmak istiyorum ;

                    Bu class'larin icerigini asagida ki diagram'da daha detayli bir sekilde gorebilirsiniz ;

                                Abstract Urunler class'nin kod yapisi ;

                          Kitaplar Class'inin kod yapisi ;

                    Dvdler Class'inin kod yapisi ;

Program.Cs Kaynak Kodu ;

Uygulamanin Ekran Goruntusu ;

            Bir sonra ki design pattern cesitimiz ile gorusmek dilegiyle, Keyifli calismalar dilerim...

Recent Posts

See All
C# Dependency Injection

Dependency Injection (DI) aslinda bir tasarım şablonu olarak bilinmektedir ve genel amacı nesneler arasında bulunan bağımlılıkları azaltarak kullandığı İnterface'ler sayesinde implement edilen içerikl

 
 
 
Windows Azure Nedir?

Windows Azure, hizmet yönetim ortamlarını ve servislerini barındırarak geliştirilmiş bulut teknolojilerinin oluştuğu bir işletim sistemi gibi düşünülebilir. Windows azure, Microsoft veri merkezleri

 
 
 
Navigation - Navigasyon

Kullanıcıların Metro Style uygulamalarında kolay bir şekilde kullanabilmeleri ve sayfalar arası geçişleri daha sezgizel bir şekilde yapabilmeleri için geliştirilmiş bir yöntemdir. Bu özellik sayesinde

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page