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.

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

  • 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.

Last updated