디자인 모드 21 - 상태 모드

4231 단어 디자인 모드
1. 개념
     대상 이 내부 상태 가 바 뀔 때 그의 행동 을 바 꾸 도록 허락 하 다.대상 이 그의 종 류 를 바 꾼 것 처럼 보인다. 
2. 사례
    
package org.demo.state.demo01;

class Context{

    private State state ;

    public Context(State state){

        this.state = state ;

    }

    public State getState() {

        return state;

    }

    public void setState(State state) {

        this.state = state;

        System.out.println(state.getClass().getName());

    }

    

    public void request(){

        state.handle(this) ;

    }

}

/**

 *            Context                  handle   

 */

abstract class State {

    abstract void handle(Context context) ; 

}



class ConcreteStateA extends State{



    @Override

    void handle(Context context) {

        //if(Context.getI()>5){    }else{           }

        System.out.println("  a   ");

         context.setState(new ConcreteStateB()) ; //             

    }

}



class ConcreteStateB extends State{



    @Override

    void handle(Context context) {

          System.out.println("  b   ");

          context.setState(new ConcreteStateA()) ; //       

    }

}



public class Demo01 {

    public static void main(String[] args) {

         Context c = new Context(new ConcreteStateA()) ;

         c.request() ;

         c.request() ;

         /*c.request() ;

         c.request() ;*/

         

    }

}

좋은 웹페이지 즐겨찾기