İçeriğe geç →

C# Template Method Kullanımı

Merhaba arkadaşlar,

Uzun bir bayram arasından sonra Behavioral(Davranışsal) tasarım kalıpları konumuza kaldığımız yerden hızla devam ediyor olacağız. 🙂

Yine kullanım oranı oldukça sık görülen bir tasarım deseni olan Template Method desenini inceleyeceğiz.

Template Method deseni için:

Şablon bir algoritmamızın soyut(abstract) bir sınıfa implemente edilip, sorumlulukların alt sınıflara dağıtılması işlemidir diyebiliriz.

Bu sayede bize katacağı avantajları ele aldığımızda ise:

  • Kod tekrarının önüne geçilerek, tekrar kullanılabilirliği arttırır
  • Maintenance işlemi olarakta, şablon algoritma üzerinde gerçekleştirilerek bir değişimi tek bir noktadan yapılabilmesini sağlamaktadır

UML şeması aşağıdaki gibidir:

TemplateMethodDiagram

AbstractClass: Şablon algoritmamızın tanımlanacağı soyut sınıf.
ConcreteClass: Şablon algoritmanın adımlarını gerçekleştirecek olan gerçek sınıfımız.

Bir örnek üzerinde kullanımına bir bakalım.

Örneğimizde basit bir Configuration Reader kütüphanesi oluşturalım. Bu kütüphane ister App.Config istersede xml dosyası üzerinden vereceğimiz bir key doğrultusunda bize değerini okuyup getirebilecek. Buradaki şablon algoritmamız ise Read işlemi olsun.

ConfigurationBase soyut sınıfımızı tanımladık ve şablon algoritma iskeletimiz olan Read metotunu implemente ettik. Read metotu içerisinde ise ilgili alt sınıfların kendilerine özel sorumluluklarda ilgili metotu override edebilmeleri için GetValue isminde dışarıya kapalı bir abstract metot tanımladık.

Şimdi sıra geldi gerçekleyecek olan sınıfımıza.

AppConfigReader sınıfında ConfigurationBase soyut sınıfını miras alarak yine soyut olarak tanımladığımız GetValue metotunun override işlemini gerçekleştirdi ve kendi sorumluluğunda olan App.Config üzerinden okuma işlemini gerçekleştirdi.

Bunun gibi gerçekleyen sınıfları ilgili iş kurallarınız gereği sizde çoğaltabilirsiniz. Xml dosyası üzerinden okuma, veritabanı üzerinden okuma gibi.

Kullanımına geçmeden önce ilgili gerçekleyen sınıflarımızın üretiminden sorumlu olacak ilgili factory sınıfını yazalım 🙂 Bir sonraki makale konumda ise Factory Method tasarım deseni hakkında detaylı bilgiyi vereceğim.

ConfigurationFactory sınıfınıda Singleton tasarım deseninide uygulayarak geliştirdik. Artık gerçek sınıflarımızın üretiminden de sorumlu olacak tek bir sınıfımız var.

Her şey hazır olduğuna göre şimdi kullanımına bir göz atalım:

Örneğimizde şablon algoritmamızı ConfigurationBase sınıfına implemente ederek Read işlemini ilgili alt sınıflara bıraktık. Bu sayede şablon algoritmamız üzerinde tek bir noktadan yani ConfigurationBase üzerinden istediğimiz değişikliği yapabilir bir hale getirdik. ConfigurationFactory sınıfı aracılığı ise üretim işlerini tek bir sınıfa yükledik.

Ekran çıktısı aşağıdaki gibidir:

templatemethod

 

Bu makale toplam (1983) kez okunmuştur.

9
0



Kategori: Tasarım Kalıpları (Design Patterns)

2 Yorum

  1. Rec Rec

    Bu bir lisanslama olarakta kullanilabilirmi acaba

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*