Louie NRT Story

[디자인패턴] 상태(State) 본문

전기차충전기

[디자인패턴] 상태(State)

hyeok0724.kim@gmail.com 2022. 5. 25. 20:33
반응형

작성일: 22년 5월 25일

 

Contents

1. 배경

2. ModeSwitch 코드

3. ModeState 코드

4. Main 코드

 

 

1. 배경

 - 토글 스위치를 누를때마다 Mode가 변경됨

 

 

2. ModeSwitch 코드

public class ModeSwitch {

    private ModeState modeState = new ModeStateLight();

    public void setModeState (ModeState _modeState){
        modeState = _modeState;
    }

    public void onSwitch(){
        modeState.toggle(this);
    }
}

 

 

3. ModeState 코드

public interface ModeState {
    public void toggle (ModeSwitch modeSwitch);
}

class ModeStateLight implements ModeState{
    public void toggle (ModeSwitch modeSwitch) {
        System.out.println("MODE LIGHT TO DARK");
        modeSwitch.setModeState(new ModeStateDark());
    }
}

class ModeStateDark implements ModeState {
    public void toggle (ModeSwitch modeSwitch){
        System.out.println("MODE DARK TO LIGHT");
        modeSwitch.setModeState(new ModeStateLight());
    }
}

 

 

4. Main 코드

final ModeSwitch modeSwitch = new ModeSwitch();

modeSwitch.onSwitch(); //"From Light To Dark 출력
modeSwitch.onSwitch(); //"From Dark To Light 출력
modeSwitch.onSwitch(); //"From Light To Dark 출력
modeSwitch.onSwitch(); //"From Dark To Light 출력

 

 

Referece:

https://www.youtube.com/watch?v=lJES5TQTTWE&t=564s 

 

반응형
Comments