Yapısal Kalıplar (Structural Patterns)

Eyl 08, 2013

Yapısal kalıplar (Structural patterns), yaratım (creation) ve davranış (behaviour) kalıpları ile beraber tasarım kalıplarını (Design Patterns) oluşturan modellerden biridir. Amaçları itibariyle yapısal kalıplar, sınıflar ve nesnelerin birleştirilerek daha geniş yazılım gruplarının kurulmasına olanak sağlayan öneriler sunar. C# (C Sharp) programlama dilindeki sınıf ve nesne yapısına uygun olarak yapısal kalıplarda kendi içlerinde sınıf yapı kalıpları ve nesne yapı kalıpları olmak üzere ikiye ayrılır. Bunlardan sınıf yapı kalıpları nesne tabanlı programcılığın (object oriented programming) dört temel unsurundan biri olan kalıtımı (inheritance) kullanarak sınıf arayüzlerini (interface) yada uygulamaları birleştirerek yazılım projelerindeki yapıları genişletir. Nesne yapı kalıpları ise 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. Bunlar:

  1. Adaptör Kalıp (Adapter Pattern)
  2. Köprü Kalıp (Bridge Pattern)
  3. Bileşik Kalıp (Composite Pattern)
  4. Dekoratör Kalıp (Decorator Pattern)
  5. Vitrin Kalıp (Facade Pattern)
  6. Sineksıklet Kalıp (Flyweight Pattern)
  7. Vekil Kalıp (Proxy Pattern)
  • Adaptör Kalıp (Adapter Pattern)

    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.

  • Köprü Kalıp (Bridge Pattern)

    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ırlar.

  • Bileşik Kalıp (Composite Pattern)

    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.

  • Dekoratör Kalıp (Decorator Pattern)

    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.

  • Vitrin Kalıp (Facade Pattern)

    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.

  • Sineksıklet Kalıp (Flyweight Pattern)

    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.

  • Vekil Kalıp (Proxy Pattern)

    Vekil kalıp internet bağlantıları, yüksek miktarda hafıza kullanımları, dosyalar veya başka türlü tüm karmaşık pahalı ve yapım aşaması zorlayıcı olan nesnelerin tek bir arayüz tarafından kullanılmalarını olası kılar.