λ³Έλ¬Έ

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

 

곡유

λŒ“κΈ€

Cloud & AI Engineering | μž„μŠΉν•œ

design by tokiidesu. powerd by Daum.