[자바 디자인패턴 소스코드] State Pattern
- Java/Java
- 2022. 5. 25. 22:17
상태 패턴
/**
* 디자인패턴 - 스테이트 패턴
* 스테이트 패턴은 상태에 따라 동일한 작업이 다른 방식으로 실행될 때
* 해당 상태가 작업을 수행하도록 위임하는 디자인 패턴이다.
*/
public class StatePattern {
public static void main(String[] args) {
TV tv = new TV();
tv.turn_on();
tv.turn_off();
tv.turn_off();
tv.turn_on();
tv.turn_off();
}
}
interface State {
public void turn_on(TV tv);
public void turn_off(TV tv);
}
class TV {
private State state;
public TV() {
state = OFF.getInstance();
}
public void setState(State state) {
this.state= state;
}
public void turn_on() {
state.turn_on(this);
}
public void turn_off() {
state.turn_off(this);
}
}
class ON implements State {
private static ON on = new ON();
private ON(){}
public static ON getInstance() {
return on;
}
public void turn_on(TV tv) {
System.out.println("-");
}
public void turn_off(TV tv) {
System.out.println("TV Off!");
tv.setState(OFF.getInstance());
}
}
class OFF implements State {
private static OFF off = new OFF();
private OFF(){}
public static OFF getInstance() {
return off;
}
public void turn_on(TV tv) {
System.out.println("TV On!");
tv.setState(ON.getInstance());
}
public void turn_off(TV tv) {
System.out.println("-");
}
}
'Java > Java' 카테고리의 다른 글
[자바 디자인패턴 소스코드] Observer Pattern (0) | 2022.06.02 |
---|---|
[자바 디자인패턴 소스코드] Command Pattern (0) | 2022.05.25 |
[자바 디자인패턴 소스코드] Singleton Pattern (0) | 2022.05.25 |
[자바 디자인패턴 소스코드] Strategy Pattern (0) | 2022.05.24 |
Set / Map (0) | 2019.08.16 |
이 글을 공유하기