Problem
-Bir dizi algoritmamızın olduğunu ve bu algoritmaları context sınıfı içerisinde Switch yada İF-ELSE bloklarıyla implemente ettiğimizi düşünelim.
örn : 18 yaşından küçükse şöyle hesapla, 18 yaşından büyükse böyle hesapla 0 ile 10 arasındaysa böyle yap, 50 ile 1000 arasında şöyle yap, 100 den büyükse şöyle yap
-Eklenecek her yeni algoritma context sınıfımız içerisine ayrı bir blok olarak eklenir. Bu da context sınıfımızın büyümesine sebep olur.
-Öte yandan algoritmalar genellikle geliştirme ve yeniden kullanım sırasında genişletilir, Optimize edilir ve değiştirilir. Bu nedenle kodumuz SOLİD'in SRP preinsibini ve OCP yi ihlal eder. Çünkü her bir Swich Case yada İF-ELSE bloğu kodumuzu değiştirmek için ayrı bir nedene karşılık gelmektedir.
-Yukarıdaki resimdeki şekilde kodumuz compile-time da belli bir algoritmaya bağlanır ve artık bu algoritmayı run-timeda değiştirmemiz imkansız hale gelir.
Çözüm
Bir algoritma ailesi tanımla, algoritmaların her birini sarmala ve onları birbirleri yerine geçebilecek hale getir.
Strateji, algoritmanın onu kullanan istemcilerden bağımsız olarak değişebilmesini sağlar.
Sonuç
Ne zaman bir şeyi hesaplamanın farklı yollarıyla karşılaşırsanız, bir iş kuralının bir faktöre göre değişem şekilleri vs. varsa Strategy kalıbını kullanın.
Hiç yorum yok:
Yorum Gönder