Tasarım Modelleri - Strateji Modeli
Strateji modelinde, bir sınıf davranışı veya algoritması çalışma zamanında değiştirilebilir. Bu tür bir tasarım örüntüsü davranış örüntüsünün kapsamına girer.
Strateji modelinde, çeşitli stratejileri temsil eden nesneler ve davranışı strateji nesnesine göre değişen bir bağlam nesnesi yaratırız. Strateji nesnesi, bağlam nesnesinin yürütme algoritmasını değiştirir.
Uygulama
Biz oluşturmak için gidiyoruz Strateji bir eylem ve uygulama beton strateji sınıfları tanımlayan bir arayüz Strateji arayüzünü. Bağlam , bir Strateji kullanan bir sınıftır.
Demo sınıfımız StrategyPatternDemo , uyguladığı veya kullandığı stratejiye göre Bağlam davranışındaki değişikliği göstermek için Bağlam ve strateji nesnelerini kullanacaktır.
Aşama 1
Bir arayüz oluşturun.
Strategy.java
public interface Strategy {
public int doOperation(int num1, int num2);
}
Adım 2
Aynı arayüzü uygulayan somut sınıflar oluşturun.
OperationAdd.java
public class OperationAdd implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
OperationSubstract.java
public class OperationSubstract implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
OperationMultiply.java
public class OperationMultiply implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1 * num2;
}
}
Aşama 3
Bağlam Sınıfı Oluşturun .
Context.java
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2){
return strategy.doOperation(num1, num2);
}
}
4. adım
Stratejisini değiştirdiğinde davranıştaki değişikliği görmek için Bağlamı kullanın .
StrategyPatternDemo.java
public class StrategyPatternDemo {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSubstract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}
Adım 5
Çıkışı doğrulayın.
10 + 5 = 15
10 - 5 = 5
10 * 5 = 50