بخش های اصلی

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

Design Pattern - الگوی State

در الگوی State، رفتارِ (behavior) کلاس بر اساس وضعیتش تغییر می کنه، این نوع الگوی طراحی، زیرگروهِ الگوی رفتاری (behavioral) محسوب میشه.

در الگوی State، اشیایی که نشان دهنده ی وضعیت های مختلفی هستن و همچنین شیء context را که بر اساس تغییرات وضعیتِ object رفتارش تغییر می کنه، ایجاد می کنیم.

پیاده سازی

در این بخش یک رابطِ State که یک عمل را تعریف می کنه و کلاس های concreteای که رابطِ State را پیاده سازی می کنن، تعریف میکنیم. Context، کلاسیِه که یک State را نگه میداره.
StatePatternDemo، در نسخه ی آزمایشیِ کلاس مان، از Context و اشیاءِ State برای نشان دادن تغییراتِ رفتارِ Context بر اساس نوع وضعیتی که در آن قرار داره استفاده خواهیم کرد.

state pattern uml diagram

مرحله ی 1

ایجاد یک رابط.

State.java

public interface State {
   public void doAction(Context context);
}

مرحله ی 2

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

StartState.java

public class StartState implements State {

   public void doAction(Context context) {
      System.out.println("Player is in start state");
      context.setState(this);	
   }

   public String toString(){
      return "Start State";
   }
}

StopState.java

public class StopState implements State {

   public void doAction(Context context) {
      System.out.println("Player is in stop state");
      context.setState(this);	
   }

   public String toString(){
      return "Stop State";
   }
}

مرحله ی 3

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

Context.java

public class Context {
   private State state;

   public Context(){
      state = null;
   }

   public void setState(State state){
      this.state = state;		
   }

   public State getState(){
      return state;
   }
}

مرحله ی 4

استفاده از Context برای دیدن تغییراتِ رفتاری اش به هنگام تغییراتِ State.

StatePatternDemo.java

public class StatePatternDemo {
   public static void main(String[] args) {
      Context context = new Context();

      StartState startState = new StartState();
      startState.doAction(context);

      System.out.println(context.getState().toString());

      StopState stopState = new StopState();
      stopState.doAction(context);

      System.out.println(context.getState().toString());
   }
}

مرحله ی 5

بررسی خروجی

Player is in start state
Start State
Player is in stop state
Stop State
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

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

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

مبحث آموزشی

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

Learn Design Patterns

سرفصل ها

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

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

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

https://telegram.me/softskill_ir

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

خبـرنــامه

Newsletters

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