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