# Structural Design Patterns

Structural Design Patterns;  **kullanıcılara nesnelerin kendi sahip olduklarından başka işlevler kazanmaları için bu nesnelerin birleştirilip yeni nesneler oluşturulması konusunda yardımcı olur.** Yapısal kalıplar ayrıca yazılım mühendislerinin uygulamalar geliştirdikleri projelerinde ihtiyaç duydukları çesitli durumlarda kullanılmak üzere yediye ayrılır. Yapısal kalıplar yazılım projelerinin tasarım aşamalarında veya bu projelerin genişletilme aşamalarında kullanılabilirler. Temel olarak tüm bu kalıplardan bazıları sadece projelerin başlangıç aşamalarında kullanılmak üzere özelleştirilmişseler de yapısal kalıplar grubuna ait olan tüm tasarım kalıpları kullanılacakları yer ve projelerin durumlarına göre her biri bir diğerinin alternatifi olarak iş görebilirler. Yapısal kalıplar kendi içinde yedi alt başlığa ayrılır.

![](https://843841140-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MPTaJDw4ydhbhVvAsOm%2F-MPTaM0_Y1UdPD2LkwOB%2F-MPTirIRzNhH21-F2NWn%2FStructuralDesignPatterns.png?alt=media\&token=424346af-a2f7-4d5b-82b6-8f217f670988)

* **Adapter:** Uygulamada ki bir yapıya dışarıdaki bir yapıyı uygulamayı düzenler.  Adaptör kalıp sadece bir sınıfa **(class)** özel olan arayüzleri diğer sınıflarla uyumlu arayüzler haline getirir. Adaptörler uyumlu olmayan arayüzler sebebiyle birbirleri ile çalışamayan sınıflara da birbirleri ile çalışma imkanı sunarlar.
* **Bridge**: Nesnelerin modelleme ve uygulanmasını ayrı sınıf hiyerarşilerinde tanımlanmasını düzenler.  Köprü kalıp soyutlamayı **(abstraction)** uygulamadan **(implementation)** ayırarak ikisinin birbirinden bağımsız çalışmasını sağlar. Bunu yaparken katmanlı yapı **(encapsulation)**, toplama **(aggregation)** ve de kalıtımı kullanarak programın görevlerini birbirlerinden farklı sınıflara aktarırla&#x72;**.**
* **Composite**: Ağaç yapısında ki nesne kalıplarının hiyerarşik olarak iç içe kullanılmasını düzenler. Bileşik kalıp birbirilerinden farklı olan bir grup nesnenin sanki tek bir bütün nesneymiş gibi davranmalarını sağlarlar. Bileşik kalıpların görevleri nesneleri bir ağaç yapısında birleştirip uygulamanın genelindeki parça bütün ilişkisini yeniden düzenleyip şekillendirmektir.
* **Decorator**: Bir yapıya dinamik olarak yeni metotlar eklenmesini düzenler. Dekoratör kalıp uygulamada runtime esnasında bir sınıfın işlevlenebilirliğinin genişletilmesini veya başka bir deyişle yeniden dekore edilebilmesini mümkün kılar. Bunu yaparken dekoratör kalıpları orjinal sınıfları kapsayan yeni dekorator sınıfları üreterek yaparlar.
* **Facade Patterns**; Alt sistemlerin direkt olarak kullanılması yerine alt sistemdeki nesneleri kullanan başka bir nesne üzerinden kullanılmasını sağlar.  Vitrin kalıp çok geniş boyutlardaki kod parçalarını onlara göre çok daha sadeleştirilmiş arayüzlere indirgenilmesini sağlar. Sınıf kütüphaneleri **(class library)** bu tür kalıplar için verilebilecek en iyi örnekleridir.
* **Flyweight;** Sık kullanılan nesnelerin bellek yönetimini kontrol etmek için kullanılan bir tasarım desenidir. Sineksıklet kalıp hafıza kullanımını en aza indirebilmek için verileri kendisine benzer olan nesnelerle mümkün olduğu kadar paylaşan nesnelerdir. Başka bir deyişle çok sayıda aynı türden nesneler yaratılacağına tek bir nesneden görsel nesneler yaratarak kalabalık bir nesne yapısı kurulmasına olanak sağlar.
* **Proxy**; Oluşturulması karmaşık veya oluşturulması zaman alan işlemlerin kontrolünü sağlar. Sineksıklet kalıp hafıza kullanımını en aza indirebilmek için verileri kendisine benzer olan nesnelerle mümkün olduğu kadar paylaşan nesnelerdir. Başka bir deyişle çok sayıda aynı türden nesneler yaratılacağına tek bir nesneden görsel nesneler yaratarak kalabalık bir nesne yapısı kurulmasına olanak sağlar.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ridvanorun.gitbook.io/desing-patterns/structural-design-patterns.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
