TASARIM ÖRÜNTÜLERİ
Strategy
Strategy örüntüsü sizin nesnenizin içindeki davranışı soyutlayıp dışarıdan bu davranışı/stratejiyi nesneye ekleyerek çalıştırmanızı sağlar.
Bilgi Notu: Diğer tüm Tasarım Örüntüleri yazıma bu linkten ulaşabilirsiniz.
Yapısı
Örnek Kullanım
Örneğin Bir savaş alanında(arenasında) savaşan 3 tane robotunuz olsun. Bunların 3 tip davranış ile hareket etmesini istiyorsunuz.
- Normal Davranış: Normal hızla gezinir. Çevresinde gezen robotları aldırmaz. Rastgele hareket eder.
- Defansif Davranış: Yavaş hareket eder. Çevresinde gezen robotlar belli bir yakınlığa geldiğinde uzaklaşır.
- Agrasif Davranış: Hızlı hareket eder. Çevresinde gezen robot farkettiğinde üzerine doğru hareket eder.
Bunun için birinci yöntem Robot sınıfının içerisinde switch/case yazıp davranış mantıkları bu sınıf içerisinde yazdığınızda aşağıda ki 2 problem ile karşılaşırsınız.
- Robot’a yeni bir davranış eklemek için Robot nesnesini güncellemeniz gerekir.
- Bu davranışı Robot dışında bir nesnede kullanmak isterseniz kodu kopyalayıp/yapıştırmanız gerekir.
Aşağıdaki kodda IBehaviour interface bizim soyutlamak istediğimiz davranışı yani Robot’un move fonksiyonunu soyutlar.
Bundan türeyen 3 tip davranış var. Robot nesnesi kendisine atanan davranışı Stratejisini çalıştırarak hareketini gerçekleştirir. Bu sayede Robot hangi hareketi yapacağı konusunda bir kodu/mantığı kendi içerisinde barındırmaz.
- “AggressiveBehaviour”
- “DefensiveBehaviour”
- “NormalBehaviour”
Örnek Kod
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.