> For the complete documentation index, see [llms.txt](https://bekoturko.gitbook.io/yazilim-gelistirme-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bekoturko.gitbook.io/yazilim-gelistirme-wiki/yazilim-gelistirme-kilavuzu/design-patterns-tasarim-kaliplari.md).

# Design Patterns - Tasarım Kalıpları

Design Patterns - Tasarım Kalıpları

### Kaynaklar

* <https://sourcemaking.com/design_patterns>
* <https://www.wikiwand.com/en/Software_design_pattern>
* <https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612>
* <https://www.dofactory.com/net/design-patterns>

Yazılım mühendisliğinde, bir tasarım kalıbı yazılım tasarımında sıkça yaşanan bir sorunun genel, tekrarlanabilir bir çözümüdür. Bir tasarım kalıbı doğrudan koda çevrilebilen, bitmiş bir tasarım değildir. Birçok farklı durumda kullanılabilen, bir sorunun nasıl çözüleceğinin bir tanımı veya şablonudur.

Yazılım geliştiricilerin belirli yapıların iyi bilinen isimleriyle iletişimde bulunmasını da sağlar.

### Yaratma tasarım kalıpları (Creational design patterns)

Bu tasarım kalıpları sınıflardan nesne oluşturmayla ilgilidir. Bu kalıplar ikiye ayrılabilir: sınıf oluşturma kalıpları ve nesne oluşturma kalıpları. Sınıf-oluşturma kalıpları kalıtımı etkin olarak kullanırken, nesne-oluşturma kalıpları delegasyonu etkin bir şekilde kullanır.

[Abstract Factory](https://sourcemaking.com/design_patterns/abstract_factory)\
Çeşitli sınıf aileleri için örnek yaratır.

[Builder](https://sourcemaking.com/design_patterns/builder)\
Nesne oluşturmayı, nesnenin sunumundan ayırır.

[Factory Method](https://sourcemaking.com/design_patterns/factory_method)\
Çeşitli türemiş sınıflardan bir örnek yaratır.

[Object Pool](https://sourcemaking.com/design_patterns/object_pool)\
Pahalı edinimlerden kaçınıır ve kullanılmayan nesneleri geri dönüştürerek kaynakları serbest bırakır.

[Prototype](https://sourcemaking.com/design_patterns/prototype)\
Kopyalanacak veya klonlanacak bir sınıf örneği

[Singleton](https://sourcemaking.com/design_patterns/singleton)\
Sadece bir örneği varolan bir sınıf

### Yapısal tasarım kalıpları (Structural design patterns)

Bu tasarım kalıpları Sınıf ve Nesne kompozisyonuyla ilgilidir. Yapısal nesne-yaratma kalıpları arayüzleri oluşturmak için kalıtım kullanır. Yapısal nesne kalıpları yeni işlevsellik edinmek için nesneleri biraraya getirmek (compose) için gereken yolları tanımlar.

[Adapter](https://sourcemaking.com/design_patterns/adapter)\
Farklı sınıfların arayüzlerini eşleştirir.

[Bridge](https://sourcemaking.com/design_patterns/bridge)\
Bir nesnenin arayüzünü implementasyonundan ayırır.

[Composite](https://sourcemaking.com/design_patterns/composite)\
Basit ve kompozit nesneler için bir ağaç yapısı.

[Decorator](https://sourcemaking.com/design_patterns/decorator)\
Nesnelere dinamik olarak sorumluluk ekler.

[Facade](https://sourcemaking.com/design_patterns/facade)\
Bütün bir altsistemi temsil eden bir nesne.

[Flyweight](https://sourcemaking.com/design_patterns/flyweight)\
Verimli paylaşım için küçültülmüş bir örnek.

[Private Class Data](https://sourcemaking.com/design_patterns/private_class_data)\
Erişim ve değiştirme erişimini kısıtlar.

[Proxy](https://sourcemaking.com/design_patterns/proxy)\
Başka bir nesneyi temsil eden bir nesne.

### Davranışsal tasarım kalıpları (Behavioural design patterns)

Bu tasarım kalıpları nesnelerin arasındaki iletişimi hakkındadır.

[Chain of responsibility](https://sourcemaking.com/design_patterns/chain_of_responsibility)\
Bir nesne zinciri arasında istek geçirmenin bir yolu.

[Command](https://sourcemaking.com/design_patterns/command)\
Komut nesnesini bir nesne olarak enkapsüle eder.

[Interpreter](https://sourcemaking.com/design_patterns/interpreter)\
Bir programda dil öğelerini dahil etmenin bir yolu.

[Iterator](https://sourcemaking.com/design_patterns/iterator)\
Bir kolleksiyonun elemanlarına sırayla erişir.

[Mediator](https://sourcemaking.com/design_patterns/mediator)\
Sınıflar arasında basitleştirilmiş bir iletişim tanımlar.

[Memento](https://sourcemaking.com/design_patterns/memento)\
Bir nesnenin dahili durumunu ele geçirir ve yeniden o duruma dönmesini sağlar.

[Null Object](https://sourcemaking.com/design_patterns/null_object)\
Bir nesnenin varsayılan değeri gibi davranmak için tasarlanır.

[Observer](https://sourcemaking.com/design_patterns/observer)\
Bir grup sınıfa değişimi bildirmenin bir yolu.

[State](https://sourcemaking.com/design_patterns/state)\
Bir nesnenin durumu değişince davranışını değiştirir.

[Strategy](https://sourcemaking.com/design_patterns/strategy)\
Bir sınıfın içinde bir algoritma enkapsüle eder.

[Template method](https://sourcemaking.com/design_patterns/template_method)\
Bir algoritmanın asıl adımlarını alt sınıfa bırakır.

[Visitor](https://sourcemaking.com/design_patterns/visitor)\
Bir sınıf değişmeden, o sınıfa yeni bir operasyon tanımlar.
