Merhaba değerli Java dostları,

Bugünkü yazımda bir başka davranışsal tasarım şablonu olan strategy design pattern değinmek istiyorum. Bazen bir işlemi, bir amacı gerçeklemek için birden fazla yol veya alternatif olabilir. Bu alternatiflerden herhangi birisini dinamik olarak çalışma anında kullanmak isteyebiliriz. İşte bu noktada strategy design pattern devreye giriyor. Yapacağımız seçime göre strategy design pattern bizim için gerekli metotları tetikleyecektir. Aslında ilk bakışta strategy design pattern ile factory design pattern benzer görünebilir; ama aralarında grup farkı vardır. Yani, factory design pattern ile nesne oluşturmada karar süreci kullanılırken, strategy design pattern ile işlev seçiminde karar süreci kullanılır. Bundan dolayıdır ki strategy design pattern davranışsal grubuna girer.

Lafı çok uzatmadan örneğimize geçelim. Aşağıdaki örnek oldukça basit. Birden, kullanıcının girdiği değere kadar olan sayıları topluyor. En basit yöntem ile bunu döngüsel bir işlem olarak kodlayabiliriz. Bir diğer ve daha şık yöntem ise matematikten bildiğimiz bir formül tek bir adımda bu işi halletmek. Seçim sizin…

package anajavatica.pattern.behavioral.strategy;public interface ISumStrategy {

public int sum(int upperLimit);

}

package anajavatica.pattern.behavioral.strategy;public class IterationSumStrategy implements ISumStrategy {

@Override
public int sum(int upperLimit) {
int result = 0;

for (int i = 1; i <= upperLimit; i++)
result += i;

return result;
}

}

package anajavatica.pattern.behavioral.strategy;public class FormulaSumStrategy implements ISumStrategy {

@Override
public int sum(int upperLimit) {
int result = ((upperLimit + 1) * upperLimit) / 2;
return result;
}

}

package anajavatica.pattern.behavioral.strategy;public class SumOperation {

private ISumStrategy sumStrategy = null;

public SumOperation(ISumStrategy sumStrategy) {
super();
this.sumStrategy = sumStrategy;
}

public ISumStrategy getSumStrategy() {
return sumStrategy;
}

public void setSumStrategy(ISumStrategy sumStrategy) {
this.sumStrategy = sumStrategy;
}

public int sum(int upperLimit) {
return getSumStrategy().sum(upperLimit);
}

}

package anajavatica.pattern.behavioral.strategy;public class StrategyMain {

public static void main(String[] args) {

SumOperation sumOperation = new SumOperation(new IterationSumStrategy());
System.out.println(sumOperation.sum(6));

sumOperation.setSumStrategy(new FormulaSumStrategy());
System.out.println(sumOperation.sum(6));

}

}

Bol Java’ lı günler dileğiyle… 😀

No responses yet

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.