بخش های اصلی

آموزش الگوهای طراحی

Design Pattern - الگوی Strategy

در الگوی Sterategy ، در زمان اجرا (run time)، رفتار یا الگوی کلاس می تواند تغییر کنه. این نوع از الگوی طراحی، زیرگروه الگویِ رفتاری (behavior) محسوب میشه.

در الگوی Null Sterategy این کلاس ها را ایجاد می کنیم: اشیایی که استراتژی های مختلفی را ارائه میدن و یک شیء context که رفتارش در مورد هر شیء از استراتژیِ خودش، تغییر می کنه. شیءِ sterategy الگوریتم اجرایی شیءِ context را تغییره میده.

پیاده سازی

در این بخش رابطی به نام Sterategy، که یک عمل را تعریف می کنه و کلاس های concrete strategy که رابطِ strategy را پیاده سازی می کنن، ایجاد می کنیم. context کلاسیِه که از یک Strategy استفاده می کنه.

StrategyPatternDemo، در نسخه ی آزمایشیِ کلاسمان شیء هایِ Context و strategy را برای نشان دادن تغییراتِ رفتارِ Context بر اساس استراتژی ای که ارائه میده یا استفاده می کنه، به کار میبریم.

strategy pattern uml diagram

مرحله ی 1

ایجاد یک رابط

Strategy.java

public interface Strategy {
   public int doOperation(int num1, int num2);
}

مرحله ی 2

ایجاد کلاس های concreteای که رابطی یکسان را پیاده سازی می کنن.

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;
   }
}

مرحله ی 3

ایجاد کلاسِ Context.

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

استفاده از Contextبرای دیدن تغییرات رفتاری زمانی که استراتژی اش را تغییر میده.

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));
   }
}

مرحله ی 5

بررسی خروجی

10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش الگوهای طراحی

Learn Design Patterns

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد