Design Patterns: Giriş

unsplash_52b6b4db7397c_1

Design patternler (tasarım desenleri), bir çok kişinin tecrübeleri doğrultusunda şekillenerek bir projedeki belli bir işi aynı adımları takip ederek gerçekleştirmenize yardımcı olur. Bu sayede hazırladığınız uygulama son derece esnek, kolay yönetilebilir ve bir o kadar da diğer geliştiriciler tarafından anlaşılabilir olacaktır.

Eğer bir framework kullanıyorsanız, temel design patternler zaten sizin kullanımıza sunulmuştur ama tabiki sizin için en yararlı patterni projenizin ihtiyaçlarına göre belirlemelisiniz. Bugüne kadar ki belirlenmiş design patternleri, Creational (Yaratıcı), Structural(Hazırlayıcı) ve Behavioral(Durumsal) olarak 3 kategori altında toplayabiliriz.

Creational Patternler

Creational patternlerin amacı sistemi bağımsızlaştırmak, objelerin nasıl yaratılacağını ve nasıl sunulacağını belirlemek. Temel olarak objelerin yaratılışını abstract bir sınıfı kullanarak yaparlar. Bu sayede temel abstract sınıfı kullanarak farklı içeriklere sahip aynı yapıda diğer sınıflar hazırlanır. Bu patternlere örnek olarak; Abstract FactoryFactory ve Singleton patternlerini verebiliriz.

Structural Patternler

Structural patternlerin amacı ise karışık sistemlere bir form kazandırarak onlara erişimi daha kolay hale geitrmektir. Daha kolay anlamak açısından gerçek dünyadan bir örnek vermek istiyorum. Ev arayan bir müşteri ve emlakçıyı düşünelim. Normalde emlakçı olmadan sizin sokak sokak, mahalle mahalle ev aramanız belki de dünyanın en zor işidir. Hele bir de hava sıcaksa bu işten kötüsü yoktur. Bu zorluklarla uğraşmak yerine bir emlakçı hayalinizdeki evi sizin yerinize araştırır, bulur. Size sadece kontratı imzalamak kalır. Kısaca emlakçı bizim bir structural patternimizdir. Bize bir yapı oluştur ve biz işin karmaşıklığıyla, detayları ile uğraşmadan asıl hedefimize rahatlıkla ulaşırız. Bu patternlere örnek olarak FaçadeAdapter veComposite patternleri gösterebiliriz.

Behavioral Patternler

Behavioral Patternler daha ziyede algoritmanın ve objeler arasındaki görevlerin sorumlulukların oluşturulması için kullanılır. Kısaca sadece objenin kendisi ile değil, o objenin diğer obje arasındaki ilişkileri kurar. Gene gerçek hayattan bir örnek ile bu patternlerin amaçlarını anlamaya çalışalım. Bir restoran düşünelim ve bu restoranı temsil eden başlıca yapılar ise müşteri, garson, mutfak ve yemektir. Bu restoranın iş yapabilmesi için bu dört yapının sürekli ilişki içinde olması gerekir. Müşteri yemek söyler, garson siparişi alır, mutfak sipariş gelince yemeği hazırlar ve yemek müşteriye getirilir. İşte aradaki bu ilişkiyi modellemek için bir behavioral pattern kullanmamız uygun olacaktır. Bu patternlere örnek olarak IteratorObserver,Command ve Visitor patternleri gösterebiliriz.

Daha sonraki makalelerimde PHP ile bu patternleri nasıl kullanabileceğimize değineceğim. Genel olarak design patternlerin ne olduğunu ve çeşitlerini açıklamaya çalıştım. Şunu önemle belirtmek istiyorum ki bir durum için özelleşmiş kesin bir pattern yoktur. Farklı yollardan da giderek bir durumu daha iyi modelleyebileceğinizi unutmayın. Hayal gücünüz açık olsun :)

  
  • Yorumunuz için teşekkür ederim.