본문

State Pattern (상태 패턴)

반응형

 

 

이미지 출처: indepth.dev

 

 

💡 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();
    }
}

 

반응형

공유

댓글