κ°μ²΄κ° νΉμ μνμ λ°λΌ νμλ₯Ό λ¬λ¦¬ν΄μΌνλ μν©μμ μμ μ΄ μ§μ μνλ₯Ό 체ν¬νμ¬ μνμ λ°λΌ νμλ₯Ό νΈμΆνμ§ μκ³ , μνλ₯Ό κ°μ²΄ν νμ¬ μνκ° νλμ ν μ μλλ‘ μμνλ λμμΈ ν¨ν΄
κ°μ²΄μ νΉμ μνλ₯Ό ν΄λμ€(abstract class)λ‘ μ μΈνκ³ , ν΄λμ€μμλ ν΄λΉ μνμμ ν μ μλ νμλ€μ μ μν©λλ€. κ° μν ν΄λμ€λ€μ μΈν°νμ΄μ€λ‘ μΆμννμ¬ μ¬μ©νλ μͺ½μμλ μΈν°νμ΄μ€λ₯Ό νΈμΆν΄μ μ¬μ©ν μ μλλ‘ ν©λλ€.
public interface PowerState {
public void powerPush();
}
public class Off implements PowerState {
public void powerPush(){
System.out.println("μ μ λͺ¨λ");
}
}
public class Saving implements PowerState {
public void powerPush(){
System.out.println("μ μ on");
}
}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();
}
}