Tasarım Kalıpları – IV: Kalıbı Tanımlamak
Daha önce yayınladığım ilk yazıyla tasarım kalıplarına giriş yapmış, ikinci yazıyla da tasarım kalıplarını öğrenmek üzerinde durmuştuk. Bu yazıda da tasarım kalıplarını nasıl ifade edebileceğimizi ele alalım. Sonraki yazıda da tasarım kalıpları örneklerini ele aşmaya başlarız.
Bir tasarım şablonunun temelde dört bileşeni vardır:
- İsmi: Kalıbın ismi, o kalıbı, problemi ve çözümüyle birlikte ayırt etmemizi sağlar. Dolayısıyla kalıpların isimleri önemlidir ve genelde ilk bulanın koyduğu isimle anılır.
- Problem: Tasarım kalıbının hangi bağlamda ve nasıl ortaya çıktığını ifade eder. Genelde sözel anlatım olarak verilir.
- Çözüm: Tasarım kalıbının problemi nasıl çözdüğünü, bu amaçla kullandığı parçaları ve aralarındaki ilişkileri ifade eder. Çözüm, genelde UML’in class ve sequence diyagramları ile soyut olarak betimlenir, örnek bir gerçekleştirme ise C++ ya da Java gibi uygun bir nesne-merkezli dilde verilir.
- Sonuçlar: Kalıbın sağladıklarını ifade eder. Kalıp hem bazı kazanımlar sağlar hem de bunların karşılığında bazı kayıplara sebep olur. Sonuçlar, ayrıntılı olarak bunları ifade eder.
GoF kitabında yukarıda sayılan dört bileşeni, daha detaylı bir şekilde ele almışlar ve aşağıdaki gibi bir kalıp tanımlama yapısı kullanmışlardır. Aşağıdaki listede var olanların bazıları doğrudan yukarıdaki dört maddeden birine denk gelmektedir.
- Name (İsim): Kalıbın ismidir.
- Intent (Amaç): Kalıbın amacıdır.
- Problem/Motivation (Problem/Motivasyon): Kalıbın çözmeye çalıştığı, geniş bir alandaki pek çok özel problemi ifade eden ve soyut olarak tanımlanan tipik problemdir.
- Solution/Structure (Çözüm/Yapı): Ortaya çıktığı bağlamda kalıbın verdiği çözümdür.
- Participants and Collaborators (Katılımcılar ve Ortakları-Paydaşları) : Çözümde var olan ana nesneler ve onlarla beraber bulunan arayüz, yardımcı nesne vb. diğer yapılardır.
- Consequences (Sonuçlar): Kalıbın sağladıklarını ifade eder.
- Implementation (Gerçekleştirme): Kalıbın önerdiği çözümün gerçekleştirilmesidir.
- Generic Structure (Genel Yapı): Genelde çözümün, UML’in class ve sequence diyagramları ile soyut olarak çizimidir.
- Applicability (Uygulanabilirlik): Kalıbın uygulanabileceği bağlamları ifade eder.
- Sample Code (Örnek kod): Gerçekleştirmeden bahsedilen ve nesne-merkezli bir dilde yazılan örnek kod parçalarıdır.
- Known Uses (Bilinen Kullanımlar): Gerçek sistemlerde bilinen kullanımları.
- Related Patterns (İlgili kalıplar): İlgili diğer kalıplar, aralarındaki benzerlik ve farklar ifade edilir.
GoF kitabının sonunda, kalıplar arasındaki ilişkileri şöyle bir çizimle vermişlerdir:
Bu yazıdan sonra artık tasarım kalıplarının kendilerinden bahsetmeye başlayabiliriz.
Toplam görüntülenme sayısı: 1997