Design Pattern

•            OOP dillerinde sık sık karsilasilan  problemlerin tanimlanip,sınıflandırılıp herhangi bir programlama dilinden bagimsiz olarak bu problemlerin cozumunu class,interface, subclass,method gibi temel oop elemanlari ve bu elemanlarin iliskileri cercevesinde ifade edilmesinde kullanilir.
             Design paOOP dillerinde sık sık karsilasilan  problemlerin tanimlanip,sınıflandırılıp herhangi bir programlama dilinden bagimsiz olarak bu problemlerin cozumunu class,interface, subclass,method,property,constrcutor gibi temel oop elemanlari ve bu elemanlarin iliskileri cercevesinde şablon olarak ifade edilmesine denir.
       Design patternler insanların zaman icin de karşılaştığı sorunlara buldukları cözumlerin kalıplaşmasıdır.Örnek vermek gerekirse kahveye fiyat belirleme bir kafe icin bir problemdir.Cunku kahve sade olunca fiyat değişiyor kahveye cikolata koyunca değişiyor sut koyunca başka bir şekilde fiyat değişiyor .Dahası kahveye ilave edilecek sayısız malzeme var. kahve devi starbucks kahvelere fiyat belirlerken kendilerine uygun bir cözum bulmuşlar.Bu cözum decorator patternidir. Bu decorator pattern kahve icin gecerli olduğu gibi bir yazılım firmasının urettiği CRM yada başka bir paket programı icin de gecerlidir cunku siz bir paket programı yada projeyi satarken muşteri yeni bir özelik istediği zaman ona göre fiyat değişiyor.
            Design patternler Programcinin isini oldukca kolaylastirir, yazilan kodun tekrar tekrar kullanilmasina imkan saglar ve kod tekrarın önune gecer ama bu patterni kodda uygulamak buyuk tecrube ve bilgi ister.Özelikle OOP temeli sağlam olmalı ve OOP temel ilkeleri olan bağımlılığın azaltılması,bir sınıfın tek bir işle odaklanması(single responsible),gevşeklik,bir kere yap tekrar tekrar kullan ilkelerine sadık kalınmalı.Ayrıca herkes kod yazabilir ama önemli olan yazılan kodun bakımının kolay olması ve kırılgan olmaması yani spagetti kod dedikleri şekilde olmamalı.Yani ben bir bakım yapacaksam bir ekleme yapacaksam bunu gidip ilgili yere eklediğim zaman proje bozulmamalı bir yeri değiştirdim diye başka yer etkilenmemeli.
          Gunumuzde uretilen yazılımların maalesef ömru cok az oluyor 3-5 yıl icinde bu proje artık işimize yaramıyor yeniden yazalım deniyor yani proje öluyor bunun en buyuk sebebi proje uretilirken yazılımın temel ilkelerine bağlı kalınmaması.Siz yazılımı geliştiriyorsunuz bir gece kondu yapıyorsunuz o gun işinizi göruyor barınabiliyorsunuz o gecekonduda ama ilerde yeni istekler geliyor ve o gecekondu gökdelen oluyor ama temeli gecekondu olan bir gökdelen ne kadar ayakta kalabilir?Proje yapılmış yeni bir istek var ama o istek eklenince bir suru yer bozuluyor dolayısıyla dokunamıyorsun yani kod cok kırılkan yani esnek değil.Sayısız design pattern vardır hatta her dile özgu sayısız design pattern vardır ama biz burada temel kabul edilen GOF patternleri inceleyeceğiz
                 DesignPattern’ler
Design patternler 3 e ayrılır.
1-Creational Patterns(nesnenin yada nesnelerin oluşturulmasıyla ilgilenen patternler)
Factory Method
Abstract Factory
Singleton
Builder
Prototype

2- Structural Patterns(Nesnenin yada nesnelerin yapısıyla ilgili patternler)
Adapter
Bridge
Composite
Decorator
Façade
Proxy
Flyweight
3-Behavioral Patterns(nesnenin yada nesnelerin davranışı ile ilgili olan patternlerdir)
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor

Patternleri iyi anlamak icin anti patternleri de iyi anlamak lazım
anti pattern

Ayrıca patternler ile prensipler cok ilişkili
prensipler

Bir de kodlama standartlarına da uyduk mu nirvanaya ulaşmış oluruz

kodlama standartları

design pattern calişmak isteyenler icin
Kurulumu yapınca kodlar geliyor. Bir de öyle her adama vermeyin bu uygulamayı.

Not1:bu prensipler ust seviye yazılım bilgisi ve tecrubesi gerektirir öğrenciyseniz ve okuduysanız ve anlamadıysanız başınızı duvara vurmayın anlamaya calişin istediğnizi sorabilrisiniz
Not2:Beni + yağmuruna tutun beğenirseniz.Ayrıca değerli fikirlerinizi paylaşın lutfen.Anlaşılmayan serler de sorulabilir

Ayrıca aşağıdaki design pattern ile ilgili linkler işinizi görebilir
1  http://dofactory.com/Default.aspx

2  http://www.cihataltuntas.com/?cat=4

http://www.buraksenyurt.com/category/Tasarc4b1m-Kalc4b1plarc4b1(Design-Patterns).aspx

http://csharpnedir.com/articles/read/?filter=&author=&cat=yaz&id=513&title=

Yorumlar

  1. TEBRİK EDERİM HOCAM BAŞARILI BİR PAYLAŞIM OLMUŞ...

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi