Tasarim Örüntüleri (Design Patern)

Mustafa Erdem Köşk - 21/06/2017
tasarim-oruntuleri-design-patern

Herkese merhaba!

 

Bugün sizlere daha önce su konumda bir türünün bir çesidinden bahsettigim design paternleri ele almaya karar verdim. Önce bir baslangi.yapmadan bu seriye ortasindan giris yapmis gibi hissettim. Bu sebeple önce isi temelinden almak için karsinizdayim..

 

Yazilim gelistirmede en önemli adimlardan birisi “tasarim”dir. Eger ekrana yazi yazdiran yada ufak tasarimli basit bir program ile ugrasiyorsaniz dolayisiyla yazilimda yeni iseniz bu paternlerde "Neyin nesiymis , ben bunlari neden bilmeliyim ki ? " sorulari sormaniz gayet dogaldir. Gelisen dünya düzeni içinde bir isin kalitesi ve hizi gibi parametreler her sektör için önemli oldugu asikardir. Peki neden yazilim dünyasi bu durumdan etkilenmesin ki? Büyük projeler ve çok sayida kisiden olusmus takimlarda çalismaya basladiginizda her projede karsilasacaginiz ve basinizin belasi olabilecek durumlarla karsilasmaniz gayet mümkündür.

 

Neden Kullanmaliyim ki ? 

 

Yazilim üreten kisinin bina yapan dizayn eden bir insaat mühendisi gibi ustalikla sistemin dizayni ile ilgilenmesi gerekmektedir. Tek basiniza basit bir baraka yapabilirsiniz belki ama 20 isçinin bir araya gelip ellerinde plan proje olmadan ayni zamanda büyük bir bine yapmaya kalkistigini hayal edin. Akliniza karmasa ve basarisizlik geliyor degil mi? Iste yazilimda ki dizayn aslinda bukadar önemli ve kritiktir. Az önce bahsettigim gibi her projede basiniza gelen sizin tasariminizi zorlayacak durumlarla karsilastiginizda fark edeceksiniz ve bu size ait bir zorluk degil aksine dünya genelinde karsilasan belli basli problemlerin , bu problemleri çözmek için gidilen yollarin oldugu göreceksiniz. Kisaca bu isin tarihesinden bahsetmek gerekirse yazilim Mühendisligindeki tasarim desenlerinin gerçek tarihi, Türkçe tabir ile "4 kafadar" ( Gang of Four ) olarak da bilinen, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides in "Design Patterns, Elements of Reusable Object-Oriented Software" isimli meshur kitaplarini yayinladiktan sonra baslar.

 

 

 

Peki tam olarak nasil ?

 

Yazilim tasariminda bazi genel problemler tekrar tekrar önümüze gelir ve bunlar için benzer tasarim çözümleri tekrar tekrar üretilmek zorunda kalindigini bahsetmistim. Iste design paternleri bu genel problemlere iyi veya kabul edilmis genel çözümler önerir. Bununla beraber tasarim örüntüleri sürekli gelistirilen çözümlerdir ve liste artarak gelistirilmeye devam etmektedir. 

 

Genel olarak 3 ana baslik altinda incelenmektedirler.

 

  1. Olussal Örüntüler(Creational)
  2. Davranissal Örüntüler (Behavioral)
  3. Yapisal Örüntüler (Structural Patterns)

 

 

Olussal Örüntüler(Creational)

Nesne olusturma (instantiation) ile ilgili örüntülerdir. Bu kategorideki örüntüler, ilgili istemci nesnelerini olusturduklari nesnelerden (instances) ayirarak bir sinifin yaratim sürecindeki tüm mantigi yaratan siniftan izole etmek için kullanilir. Dahada açik olmak gerekirse Yaratilan sinif veya siniflar her durumda sabit degildir. Kullanicidan gelen bir veri ile yada programda ki bir durumla ilgli bir sinif üretilmek istenebilir. Bu sebeple hangi sinifin yaratilacagi gibi sorumluluklar, diger siniflardan ayrik olmalidir. Unutmayin kendi islerini yapan küçük parçalar her zaman isimizi yarar.

 

Davranissal Örüntüler (Behavioral)

Davranissal örüntüler, siniflarin ve nesnelerin nasil birbirleriyle iliskilendirildikleri, mesajlastiklari (nesneler arasi iletisim) ve görevlerinin nasil dagitildigi ile ilgilidir.  Birden fazla sinifin bir isi yerine getirirken nasil davranacagini belirleyen desenlerdir. Özetle yazilimi bir bina gibi düsünürsek binanin parçalarinin birbirleri ile ilgili devranislari haberlesmeleri vb gibi düsünebiliriz.

 

Yapisal Örüntüler (Structural)

 Nesne ve siniflarin nasil bir araya getirilip birlestirildikleri (kompozisyon) ve böylece daha kapsamli görevleri olan yapilarin olusturulmasi ile ilgilidir. Bina örnegimizden gidersek bir binanin nasil bir kompozisyon içinde dizayn edilecegine karar vermektedir. Örnegin beton ile demirin belli bir oranda birlikte kullanilmasi gibi diyebiliriz.

 

Burada sizlere önemli bir notum var. Yazilim paternlerini belli problemlere çözüm getirmektedir. Ancak unutulmamalidir ki bunlar mutlak dogru yaklasimlar degillerdir. Sürekli yazilim deseni kullanmaya çalismak sandiginiz gibi iyi birsey olmayabilir. Unutmayin yazilimda hiçbir durum sabit degildir ve bir cevabi yoktur. Sizlere Gang of Four'un agzindan yazilim paternleri hakkinda söylenmis bir sözü hatirlatmak isterim.

 

 

"A design pattern should only be applied when the flexibility it affords is actually needed."

"Tasarim kalibi, yalnizca sagladigi esneklige gerçekten ihtiyaç duyuldugunda uygulanmalidir. "