Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
36 lines (25 sloc) 2.16 KB
layout title date author comments category tags
post
C# if-else switch-case ifadeleri kullanmadan method çağırma
2017-05-02 22:30
engin.polat
true
C#
if
else
switch
case
break
default
dictionary
action
key
containskey
values
delegate
pattern

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;

<script src="https://gist.github.com/polatengin/17d762ace4574f963bbe8291395a7938.js?file=switch-case.cs"></script>

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;

<script src="https://gist.github.com/polatengin/17d762ace4574f963bbe8291395a7938.js?file=delegate-pattern.cs"></script>

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