λ³Έλ¬Έ
State Pattern (μν ν¨ν΄)
Software Engineering/Design & Architecture 2015. 9. 1. 09:06

π‘ State Pattern
State Patternμ μΌλ ¨μ κ·μΉμ λ°λΌ κ°μ²΄μ μν(State)λ₯Ό λ³νμμΌ, κ°μ²΄κ° ν μ μλ νμλ₯Ό λ°κΎΈλ ν¨ν΄μ λλ€.
μνμ λ°λΌ νλμ΄ λ³ννλ κ°μ²΄μ λͺ¨λ μ μ©ν μ μμ΅λλ€.
π‘ νΉμ§
State Patternμ κ°μ²΄μ νΉμ μνλ₯Ό ν΄λμ€λ‘ μ μΈνκ³ , ν΄λμ€μμλ ν΄λΉ μνμμ ν μ μλ νμλ€μ λ©μλλ‘ μ μν©λλ€.
κ·Έλ¦¬κ³ μ΄λ¬ν κ° μν ν΄λμ€λ€μ μΈν°νμ΄μ€λ‘ μΊ‘μννμ¬, ν΄λΌμ΄μΈνΈμμ μΈν°νμ΄μ€λ₯Ό νΈμΆνλ λ°©μμ λ§ν©λλ€.

public interface PowerState {
public void powerPush();
}
public class On implements PowerState {
public void powerPush() {
System.out.println("power on");
}
}
public class Off implements PowerState {
public void powerPush() {
System.out.println("power off");
}
}
public class Saving implements PowerState {
public void powerPush() {
System.out.println("power saving");
}
}
public class Laptop {
private PowerState powerState;
public Laptop() {
this.powerState = new Off();
}
public void setPowerState(PowerState powerState) {
this.powerState = powerState;
}
public void powerPush() {
powerState.powerPush();
}
}
public class Client {
public static void main(String args[]) {
Laptop laptop = new Laptop();
On on = new On();
Off off = new Off();
Saving saving = new Saving();
laptop.powerPush();
laptop.setPowerState(on);
laptop.powerPush();
laptop.setPowerState(saving);
laptop.powerPush();
laptop.setPowerState(off);
laptop.powerPush();
laptop.setPowerState(on);
laptop.powerPush();
}
}
λκΈ