C# if-else switch-case ifadeleri kullanmadan method çağırma

Geçtiğimiz yıl, geliştirilmesine yardımcı olduğum bir e-ticaret sitesi projesinde bir gün aşağıdaki gibi kodlar yazıyordum;

Eminim benim gibi sizler de zaman zaman if-else blocklarını veya switch-case blocklarını yukarıdaki gibi kullanıyorsunuzdur.

Yukarıdaki kodda yanlış bir durum gözükmese de, ya biri birgün yeni bir arama methodu ekleyecek olsa? Hatta biri bir arama methodunu silmek istese?

İşte bu tip durumlarla karşılaşılabilir, bu durumu nasıl ortadan kaldırabilirim diye düşünerek, küçük egzersizler yapmaya başladım.

Sonunda aklıma şöyle bir fikir geldi;

  • Dictionary<TKey, TValue> sınıfından bir değişken tanımlasam ve Key için SearchArea, Value için Action tiplerini belirlesem
  • Bu değişkene istediğim SearchArea için istediğim Action'ları eklesem
  • Bir arama yapılacağı zaman SearchArea'a uygun Action'ları getirsem ve sırasıyla onları çağırsam?

Böylece istediğim SearchArea için bir veya daha fazla Action tanımlayabilir, onları çağırabilirim.

Nasıl fikir ama? :) (O zaman farkına varmasam da Delegate Dictionary isminde bir pattern zaten varmış)

Yukarıdaki adımların koda dökülmüş hali;

Sizce de daha güzel gözükmüyor mu? :)

blog comments powered by Disqus

Engin Polat hakkında

Chief Architect, Microsoft RD, Microsoft MVP

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 459

Creative Commons Lisansı