Tasarım Deseni
- İngilizcesi
- Design Pattern
- Türkçe karşılığı
- tasarım kalıbı
- Okunuşu
- dizayn petırn
Günlük kullanımda iki ad da yaygın.
Kısaca
Tasarım deseni, yazılım tasarımında sık görülen bir soruna kanıtlanmış, yeniden kullanılabilir çözümdür; hazır kod değil, genel bir şablon olarak anlatılır.
Tasarım deseni nedir?
Tasarım deseni, tekrar tekrar karşımıza çıkan bir sorunu çözmek için kodu düzenlemenin adı konmuş, iyice sınanmış bir yoludur. Bir kütüphane ya da kopyalayıp yapıştırdığınız bir kod parçası değildir; fikrin, işin içindeki parçaların ve verilen ödünlerin tarifidir. Singleton ya da Observer gibi ortak adlar sayesinde geliştiriciler koca bir tasarımı tek bir sözcükle anlatabilir.
Klasik desenler, dört yazarı Gang of Four (Dörtlü Çete) olarak anılan 1994 tarihli Design Patterns kitabıyla yaygınlaşmış ve üç aileye ayrılmıştır. Factory ve Builder gibi oluşturucu (creational) desenler nesnelerin nasıl yaratılacağıyla, Adapter ve Decorator gibi yapısal (structural) desenler nesnelerin nasıl bir araya getirileceğiyle, Observer ve Strategy gibi davranışsal (behavioral) desenler ise nesnelerin birbirleriyle nasıl iletişim kuracağıyla ilgilenir.
Günlük hayattan bir benzetme, denenmiş bir mutfak düzenidir: her mutfak farklıdır ama evye, ocak ve buzdolabının denenmiş yerleşimi defalarca yeniden kullanılabilir. Desenler sınıflar ve nesnelerle de sınırlı değildir; ön yüz framework'lerinde, dağıtık sistemlerde ve MVC gibi mimari desenlerle uygulama düzeyinde de karşımıza çıkar.
Tasarım deseni algoritmadan farklıdır. Algoritma bir sonucu hesaplayan kesin bir adım dizisidir; desen ise kodu düzenlemenin esnek bir yoludur. Gerekmeyen yerde desen kullanmak karmaşıklık ekler; bu yüzden desenler kendi başına uygulanmamalı, gerçek bir sorunu çözmelidir.
Önemli noktalar
- Tasarım deseni, hazır kod değil, yeniden kullanılabilir bir çözüm şablonudur.
- Klasik desenler oluşturucu, yapısal ya da davranışsal olarak gruplanır.
- Desen adları geliştiricilere ortak bir söz dağarcığı sağlar.
- Desenleri aşırı kullanmak basit kodu gereksiz yere karmaşıklaştırabilir.
Örnek
// Strategy: swap an algorithm without changing the code that uses it
interface ShippingStrategy {
cost(weightKg: number): number;
}
const standard: ShippingStrategy = { cost: (kg) => 5 + kg };
const express: ShippingStrategy = { cost: (kg) => 15 + kg * 2 };
function checkout(weightKg: number, shipping: ShippingStrategy) {
return shipping.cost(weightKg);
}
console.log(checkout(3, standard)); // 8
console.log(checkout(3, express)); // 21Sık sorulan sorular
En yaygın tasarım desenleri nelerdir?
Sık kullanılan desenler arasında Singleton, Factory, Builder, Adapter, Decorator, Observer ve Strategy bulunur. Çoğu modern dillere ve framework'lere yerleşik olduğu için farkında olmadan kullanırsınız; örneğin olay dinleyicileri (event listener) Observer desenini izler.
Tasarım desenleri bugün hâlâ geçerli mi?
Evet. Modern dil özellikleri bazı desenleri basitleştirmiş ya da gereksiz kılmış olsa da altta yatan fikirler ve ortak söz dağarcığı kod tabanlarında, framework'lerde ve teknik mülakatlarda hâlâ yaygın olarak kullanılır.
Tasarım deseni ile mimari desen arasındaki fark nedir?
Tasarım deseni, birkaç sınıfın birlikte nasıl çalışacağı gibi kod tabanının tek bir bölümündeki sorunu çözer. MVC ya da mikroservisler gibi mimari desen ise bütün bir uygulamanın veya sistemin yapısını belirler.
İlgili sayfalar
- OOPProgramlamanın Temelleri, s. 41OOP, yani nesne yönelimli programlama, kodu ilişkili verileri onlar üzerinde işlem yapan fonksiyonlarla birleştiren nesneler etrafında düzenleme yöntemidir.
- SOLIDYazılım Mimarisi, s. 39SOLID, geliştiricilerin daha anlaşılır, genişletilebilir, test edilebilir ve bakımı kolay kod yazmasına yardım eden beş nesne yönelimli tasarım ilkesidir.
- MVCYazılım Mimarisi, s. 26MVC, uygulamayı veri ve mantık için Model, gösterim için View ve kullanıcı girdisini yöneten Controller olmak üzere üçe ayıran bir mimari desendir.
- AlgoritmaProgramlamanın Temelleri, s. 1Algoritma, bir listeyi sıralamak ya da en kısa yolu bulmak gibi bir sorunu çözmek veya bir işi tamamlamak için izlenen, sonlu ve adım adım yönergeler bütünüdür.
- RefactoringYazılım Mimarisi, s. 32Refactoring, mevcut kodun dışarıdan görünen davranışını değiştirmeden daha temiz ve bakımı kolay hâle getirmek için yeniden yapılandırılması sürecidir.
- FrameworkProgramlamanın Temelleri, s. 22Framework, bir uygulamanın yapısını sağlayan, yeniden kullanılabilir kod, araç ve kural temelidir; geliştiriciler yalnızca kendi mantıklarını doldurur.
- Decorator PatternYazılım Mimarisi, s. 9Decorator pattern, bir nesneyi aynı arayüze sahip başka bir nesneyle sararak orijinal kodu değiştirmeden ona loglama, önbellekleme gibi davranışlar ekler.
- Builder PatternYazılım Mimarisi, s. 3Builder pattern, karmaşık bir nesneyi ayrı bir builder nesnesiyle, argümanlarla dolu uzun bir constructor yerine adlandırılmış adımlarla adım adım oluşturur.
- IteratorProgramlamanın Temelleri, s. 27Iterator, verinin nasıl saklandığını açığa çıkarmadan, konumunu hatırlayarak bir koleksiyonun öğeleri arasında teker teker ilerlemeyi sağlayan bir nesnedir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin