Design Pattern nedir?

Design pattern, yazılım dünyasında OOP temeline dayanarak, var olan ortak problemlere uygulanan çözümlerdir.  Basit bir örnek ile açıklarsak, bir nesnenin sadece tek bir instance oluşmasını istiyorsak(mdi form gibi), Singleton patterni bu probleme bir çözüm getirmiştir. Yazılım dünyasında logical çözüm geliştirmeden; çok tasarım tabanlı çözüm geliştirmeye amaç edinmesidir. Geliştirilen uygulamanın esnekliğine(flexible), tekrar kullanabilirliliğine (reusability) odaklanmasıdır. Dolayısı ile geliştirilen çözümü, tekrardan geliştirme, iyileştirme(improvement),versiyonlama süreçlerinde büyük avantaj sağlamaktadır. Yazılım süreçlerinde mimari açıdan büyük önem taşımaktadır. Geliştirilen uygulama bir takım tarafından geliştiriliyorsa, uygulama geliştiriciler tarafından da rahatlıkla konuşmayı ve anlaşmayı destekler. Biraz da araştırma sonucu design pattern tanımlarına bakalım.

Ekşisozluk:

nesneye yonelik programlamada ** sik sik karsilasilan program dizayn problemlerini tanimlayip, herhangi bir programlama dilinden bagimsiz olarak bu problemlerin cozumunu class,interface, subclass,method gibi temel oop elemanlari ve bu elemanlarin iliskileri cercevesinde ifade etmekte kullanilir design pattern'lar. software engineering'in heyecan verici konularindan biri olup, dogru durust anlasilirsa, programcinin isini oldukca kolaylastirir, yazilan kodun tekrar tekrar kullanilmasina* imkan saglayarak. ama bu konudaki kitaplarin, ozellikle de konunun islendigi en onemli kitap sayilan, gang of four'un yazdigi 'design patterns elements of reusable object oriented software' adli kitabin soyutlugu da meshurdur.

1.(willy van der kerkhoff, 14.04.2002 06:29 ~ 07.03.2006 21:11)

IBM T J Research / James W Cooper:

·         “Design patterns are recurring solutions to design problems you see

over and over.” (The Smalltalk Companion)

“Design patterns constitute a set of rules describing how to accomplish

certain tasks in the realm of software development.” (Pree 1994)

·         “Design patterns focus more on reuse of recurring architectural design

themes, while frameworks focus on detailed design and

implementation.” (Coplien and Schmidt 1995)

·         “A pattern addresses a recurring design problem that arises in specific

design situations and presents a solution to it.” (Buschmann et al.

1996)

·         “Patterns identify and specify abstractions that are above the level of

single classes and instances, or of components.” (Gamma et al., 1993)

But while it is helpful to draw analogies to architecture, cabinet making,

and logic, design patterns are not just about the design of objects but about

the interaction between objects. One possible view of some of these

patterns is to consider them as communication patterns.

 

Christopher Alexander:

 

"Each pattern describes a problem which occurs over and over again in our

environment, and then describes the core of the solution to that problem, in such a way that you can use this

solution a million times over, without ever doing it the same way twice"

 

Bir patterni oluşturan dört temel esas vardır; pattern ismi, problem, çözüm ve sonuç. Bu dört unsur, var olan problemler karşısında mantıksal çözümlerden ziyade tasarımsal esnekliği ve tekrar kullanımı yüksek çözümü yüksek olan patterni sunar.

Design Pattern temel yaklaşım olarak 3 ayrılır: creational(oluştursal ),structural(yapısal) ve behavioral (davranışal) patterns olarak.

a.       Creational(oluştursal) pattern: Doğrudan instance almaktan, herhangi bir method veya bir durum ile ilinti instance alınmasıdır. Hangi nesnenin varolan durum için oluşturulması gerektiğine karar vermede daha fazla esneklik kazandıran patternlerdir.

                                        i.            Factory Method

                                      ii.            Abstract Factory

                                     iii.            Builder

                                     iv.            Protoype

                                      v.            Singleton

b.       Structural(yapısal) pattern: hesap verileri yada karmaşık kullanıcı arayüzleri gibi durumlarda, nesne gruplarını daha geniş yapılar içerisinde düzenlememize yardımcı olan patterndir.

                                        i.            Adapter

                                      ii.            Bridge

                                     iii.            Composite

                                     iv.            Facade

                                      v.            Proxy

c.        Behavioral(Davranışsal) pattern: modeliniz içerisindeki nesneler arasındaki iletişimi ve akışın, karmaşık bir yapıdan kontrol edilebilir tanımlamanıza yardımcı olan patterndir.

                                        i.            Interpreter

                                      ii.            Template Method

                                     iii.            Chain of Responsibility

                                     iv.            Command

                                      v.            Iterator

                                     vi.            Mediator

                                   vii.            Memento

                                  viii.            Flyweight

                                     ix.            Observer

                                      x.            State

                                     xi.            Strategy

                                   xii.            Visitor

 Bundan sonraki yazılarımda bu patternleri teker teker inceleyerek, örnekleri ile sizler ile paylaşamayı planlıyorum.

11 Nisan 2007 Çarşamba 13:39 gönderen MuratHAKSAL
Filed Under:

Yorumlar

# re: Design Pattern nedir? @ 15 Nisan 2007 Pazar 19:55

Sabırsızlıkla devamını bekliyorum...

volkank