İçeriğe geç
parazade

Tasarım Deseni Nedir?

İngilizce: Design Pattern

Yayın: · Son güncelleme:

Tasarım Deseni Nedir? Kısaca

Tasarım deseni (design pattern), yazılım geliştirmede sık karşılaşılan tasarım sorunlarına karşı denenmiş, yeniden kullanılabilir çözüm şablonudur. Hazır kod değil, bir sorunun nasıl çözüleceğini anlatan genel bir yapıdır.

Tasarım Deseni nedir?
İçindekiler
  1. Tasarım deseni nedir?
  2. Üç ana grup
  3. Ne zaman kullanılmalı?

Tasarım deseni nedir?

Tasarım deseni, yazılımcıların yıllar içinde tekrar tekrar karşılaştığı sorunlara bulunmuş ortak çözümlerin adlandırılmış hâlidir. Kopyalanıp yapıştırılacak bir kod parçası değildir. Daha çok bir tarif gibidir: hangi durumda, hangi yapıyla, hangi sonuca ulaşılacağını anlatır.

Kavram 1994'te yayımlanan "Design Patterns" kitabıyla yaygınlaştı. Kitabın dört yazarı "Gang of Four" (GoF) olarak anılır ve kitapta 23 desen tanımlanır.

Üç ana grup

GoF desenleri üç gruba ayrılır:

Grup Ne ile ilgilenir? Örnek
Yaratımsal Nesnelerin nasıl oluşturulacağı Singleton, Factory
Yapısal Nesnelerin nasıl birleştirileceği Adapter, Decorator
Davranışsal Nesnelerin nasıl iletişim kuracağı Observer, Strategy

Bir örnekle bakalım. Bir e-ticaret sitesi kredi kartı, havale ve kapıda ödeme seçenekleri sunuyor. Her yöntemi uzun bir if-else zinciriyle yönetmek yerine Strategy deseni kullanılabilir. Her ödeme yöntemi aynı arayüze uyan ayrı bir sınıf olur.

Böylece kod düzenli kalır. Yeni bir yöntem eklemek ise mevcut koda dokunmadan yeni bir sınıf yazmak kadar kolaylaşır.

Ne zaman kullanılmalı?

Desenler ortak bir dil sağlar. Ekipte "burada Observer kullanalım" demek, uzun bir açıklamanın yerini tutar.

Ancak her soruna desen uygulamak gereksiz karmaşıklık doğurur. Önce sorunu net tanımlayın, desen o soruna doğal olarak uyuyorsa kullanın. Öğrenmeye başlarken Singleton, Factory, Strategy ve Observer gibi sık görülen desenlerle başlamak, kod okurken onları tanımanızı kolaylaştırır.

Sıkça Sorulan Sorular

Tasarım desenlerini öğrenmek için hangi dil gerekir?

Desenler dilden bağımsızdır. Örnekler genelde Java veya C# gibi nesne yönelimli dillerle anlatılır, ancak aynı fikirler Python, JavaScript ve diğer dillerde de uygulanır.

MVC bir tasarım deseni mi?

MVC genelde mimari desen olarak sınıflandırılır. Tek bir sınıf düzeyinden çok uygulamanın genel yapısını düzenler, ancak içinde Observer gibi tasarım desenlerinden yararlanır.

İlgili terimler

SingletonSingleton, bir sınıftan uygulama boyunca yalnızca tek bir nesne (örnek) oluşturulmasını ve bu nesneye her yerden aynı noktadan erişilmesini sağlayan yaratımsal bir tasarım desenidir.MVCMVC (Model-View-Controller), bir uygulamayı veri ve iş kuralları (Model), kullanıcıya görünen arayüz (View) ve ikisi arasındaki trafiği yöneten kontrolcü (Controller) olarak üç parçaya ayıran mimari desendir.Nesne Yönelimli Programlama(Object-Oriented Programming)Nesne yönelimli programlama (OOP), yazılımı veri ve bu veri üzerinde çalışan davranışları bir arada tutan nesneler etrafında düzenleyen programlama yaklaşımıdır. Kapsülleme, kalıtım, çok biçimlilik ve soyutlama temel ilkeleridir.Yazılım Mimarisi(Software Architecture)Yazılım mimarisi, bir yazılım sisteminin ana bileşenlerini, bu bileşenlerin birbiriyle nasıl iletişim kurduğunu ve sistemin hangi ilkelere göre büyüyeceğini belirleyen üst düzey yapı ve kararlar bütünüdür.Havale(Wire Transfer)Havale, aynı bankanın müşterileri arasında, bir hesaptan diğerine para gönderme işlemidir. Banka içinde gerçekleştiği için genellikle anında ve günün her saatinde yapılabilir.Kapıda Ödeme(Cash on Delivery)Kapıda ödeme, internetten ya da telefonla verilen siparişin bedelinin sipariş anında değil, ürün teslim edilirken kuryeye nakit veya kartla ödendiği ödeme yöntemidir. Alıcıya ürünü görmeden para ödememe imkânı tanır.Sınıf(Class)Sınıf (class), nesne yönelimli programlamada aynı türden nesnelerin hangi verileri ve davranışları taşıyacağını tanımlayan şablondur. Sınıftan üretilen her somut örneğe nesne denir.