Mevcut bir sınıf hiyerarşisini ya da sınıfın yapısını değiştirmeden, oluşturulan nesnelere yeni özelliklerin eklenme işlemini gerçekleştirmek için Decorator tasarım şablonu kullanılır.
Alt sınıfların oluşturulması yöntemiyle, sınıflara yeni özelliklerin eklenmesi, daha sonra sisteme eklenecek alt sınıflar için değiştirilmesi zor kalıpların oluşmasını beraberinde getirir. Bu durumda, üst sınıflarda tanımlanmış olan bazı özellikler statik ve alt sınıflar için değistirilemez ya da kullanımı engellenemez bir hal alabilir. Kullanıcı sınıflar içinde bu sorun teşkil edebilir, çünkü kendi istekleri doğrultusunda bir nesnenin ne zaman ve nasıl oluşturulması gerektiğini yönlendiremeyebilirler.
Nesnelere, sahip oldukları sınıfların yapılarının değistirilmeden yeni özelliklerin eklenmesini sağlayan Decorator tasarım şablonu ile, istenilen özelliklerin ekleneceği nesne başka bir nesne içine gömülür. Yeni özellik eklenen nesneyi içine alan nesneye dekoratör ismi verilir. Dekoratör nesnesi ile yeni özellik eklenen nesne aynı üst sınfa dahil olduklarından, birbirleriyle değiştirilebilir haldedirler. Bu özellikten dolayı kullanıcı sınıf, dekoratör sınıf ile dekoratör nesne bünyesinde bulunan diğer nesne arasında ayrım yapmaz. Nesneler arası ilişkiye aşagıda ye ralan Uml diagramında görüyoruz.
Bu yazıyı PDF olarak edinebilirsiniz.
Decorator Tasarım Şablonu (46,6 KiB, 9.943 yükleme)
EOF (End of Fun)
Özcan Acar
Tasarım Şablonları (Design Patterns) kategorisinden son yazılar
- Java Enum ile Singleton Tasarım Şablonu - February 2nd, 2010
- Intercepting Filter Tasarım Şablonu - December 9th, 2009
- Builder Tasarım Şablonu - November 17th, 2009
- Service Locator Tasarım Şablonu - October 30th, 2009
- Business Delegate Tasarım Şablonu - October 30th, 2009
- Chain of Responsibility Tasarım Şablonu - October 9th, 2009
- Front Controller Tasarım Şablonu - October 9th, 2009
- Flyweight (Sinek Siklet) Tasarım Şablonu - October 9th, 2009
- Proxy (Vekil) Tasarım Şablonu - October 8th, 2009
- Facade (Cephe) Tasarım Şablonu - October 7th, 2009
arif
03 Ağustos 2010Ellerinize sağlık çok güzel bir yazı olmuş.
İsmail
06 Temmuz 2015Çok teşekkürler. Gerçekten faydalı…