μ€ν μ΄νΈ ν¨ν΄
μ€ν μ΄νΈ ν¨ν΄
κ°μ²΄μ μνμκ² μν μ μμνλ μ€ν μ΄νΈ ν¨ν΄μ μμ보μ.
κ°μ²΄μ μν
κ°μ²΄μμμ μνλ κ°μ²΄κ° μμ‘΄ μ£ΌκΈ° λμ κ°μ§ μ μλ 쑰건μ΄λ μν©
μ λ»νλ€.
μ¬λμ΄λ μ¬λ¬Όλ νμ¬μ μνμ λ°λΌ λ€λ₯΄λ―μ΄, κ°μ²΄μ§ν₯λ νμ€ μΈκ³λ₯Ό λ°μν κ²μ΄κΈ° λλ¬Έμ κ°μ²΄λ§λ€ μνκ° μ‘΄μ¬νλ€.
Switch & Client
Switch
public class Switch {
private int ON = 1;
private int OFF = 0;
private int state;
public Switch(){
state = OFF;
}
public void getOnSwich(){
if(state==ON) System.out.println("μ΄λ―Έ ON μνμ
λλ€.");
else{
state=ON;
System.out.println("μ€μμΉκ° μΌμ‘μ΅λλ€.");
}
}
public void getOffSwitch(){
if(state==OFF) System.out.println("μ΄λ―Έ OFF μνμ
λλ€.");
else{
state=ON;
System.out.println("μ€μμΉκ° κΊΌμ‘μ΅λλ€.");
}
}
}
Swich
λΌλ κ°μ²΄λ₯Ό λ§λ€μ΄μ μλ₯Ό λ€μ΄λ³΄μ.
ONκ³Ό OFFλΌλ μνλ₯Ό κ°μ§κ³ , νμ¬ μνλ₯Ό state
λΌλ λ³μμ μ μ₯νλ€.
κ·Έλ¦¬κ³ ON λ²νΌμ λλ₯΄λ νμ(getOnSwich()
λ©μλ), OFF λ²νΌμ λλ₯΄λ νμ(getOFFSwich()
λ©μλ)λ₯Ό ν΅ν΄ μ€μμΉμ μνλ₯Ό λ°κΏ μ μλ€.
Client
public class Clinent {
public static void main(String[] args) {
Switch test = new Switch();
test.getONSwich();
test.getOFFSwitch();
}
}
νμλ₯Ό νλ client
κ°μ²΄λ‘ swichλ₯Ό λ§λ€κ³ μνλ₯Ό λ³κ²½ν μ μλ€.
λ€μκ³Ό κ°μ κ²°κ³Όκ° λμ¨λ€.
μ€μμΉκ° μΌμ‘μ΅λλ€.
μ€μμΉκ° κΊΌμ‘μ΅λλ€.
μνκ° μΆκ°λλ€λ©΄?
ONκ³Ό OFF μΈμ WAITING(λκΈ°)μ΄λΌλ μνκ° μΆκ°λλ€κ³ μκ°ν΄λ³΄μ.
κ·Έλ κ² λλ©΄ swich κ°μ²΄μ getOnSwich()
λ©μλμ getOFFSwich()
λ©μλμ 쑰건문μ μΆκ°ν΄μ νμ¬ stateκ° WAITINGμΈ κ²½μ°λ₯Ό μΆκ°ν΄ μ£Όμ΄μΌ νλ€.
μ΄λ¬ν λ°©μμ 쑰건문μ μ°Ύμκ°λ©° νμ¬μ μνκ° μ΄λ»κ² λ³νλμ§ νμ
ν΄μΌ νλ―λ‘ μνμ λ³νλ₯Ό νμ
νκΈ° μ΄λ ΅κ³ , μλ‘μ΄ μνκ° μΆκ°λλ©΄ λͺ¨λ νμ λ©μλμ μλ‘μ΄ λ³νμ λ΄μ©μ μΆκ°ν΄ μ€μΌ νκΈ° λλ¬Έμ μ μ§ λ³΄μμ μ’μ§ μλ€.
μ€ν μ΄νΈ ν¨ν΄μ λμ
μμ κ°μ λ¬Έμ μν©μ μν΄ μ€ν
μ΄νΈ ν¨ν΄μ λμ
νλ€.
μ€ν
μ΄νΈ ν¨ν΄μ κΈ°μ‘΄μ λ°©μκ³Όλ λ€λ₯΄κ² μνμ κ΄ν μΈν°νμ΄μ€μ 곡λμΌλ‘ μνν΄μΌ ν νμ λ©μλλ₯Ό μ§μ νκ³ , μνμκ² κ·Έ νμ λ©μλμ μ€μ²΄νλ₯Ό μμνλ λ°©μμ΄λ€.
State
public interface State {
public void getONSwich(Switch testSwitch);
public void getOFFSwitch(Switch testSwitch);
}
λ€μκ³Ό κ°μ μΈν°νμ΄μ€λ₯Ό λ§λ€κ³ μ΄λ₯Ό μ€μ²΄ννλ ONκ³Ό OFF λ©μλλ₯Ό λ§λ€μ.
ON
public class ON implements State{
@Override
public void getONSwich(Switch testSwitch) {
System.out.println("μ΄λ―Έ ON μνμ
λλ€.");
}
@Override
public void getOFFSwitch(Switch testSwitch) {
testSwitch.setState(new OFF());
System.out.println("μ€μμΉκ° κΊΌμ‘μ΅λλ€.");
}
}
OFF
public class OFF implements State{
@Override
public void getONSwich(Switch testSwitch) {
testSwitch.setState(new ON());
System.out.println("μ€μμΉκ° μΌμ‘μ΅λλ€.");
}
@Override
public void getOFFSwitch(Switch testSwitch) {
System.out.println("μ΄λ―Έ OFF μνμ
λλ€.");
}
}
μ΄λ κ² μνμ νμ λ©μλμ ꡬνμ μμνλ€.
κ·Έλ¬λ©΄ Switch κ°μ²΄λ λ€μκ³Ό κ°μ΄ μμ ν΄μΌ 보μ.
Switch
public class Switch {
public void setState(State state) {
this.state = state;
}
private State state;
public Switch(){
state = new OFF();
}
public void getONSwich(){
state.getONSwich(this);
}
public void getOFFSwitch(){
state.getOFFSwitch(this);
}
}
μμ κ°μ΄ μ€μ²΄νλ μνκ° Switchμ κ°μ²΄μ μνλ₯Ό λ³κ²½ν΄ μ£Όλ set λ©μλλ₯Ό μΆκ°νκ³ , ꡬ체μ μΈ νμλ μ€μ²΄νλ μν κ°μ²΄μ μμνλ€.
μ₯μ
- μνλ³νλ₯Ό λΉκ΅μ μ½κ² νμΈν μ μλ€.
- μλ‘μ΄ μνκ° μΆκ°λλ©΄ λ©μλμ 쑰건문μΌλ‘ μΆκ°νλ κ²μ΄ μλλΌ stateλ₯Ό μ€μ²΄ννλ κ°μ²΄λ₯Ό λ§λ€μ΄μ£Όλ©΄ λλ€.
- κ·Έλ¬λ―λ‘ μνκ° μΆκ°λλ€ ν΄μ Switchμ μμ€λ₯Ό μμ ν νμκ° μλ€.
- clientλ μν κ°μ²΄μ λν μ§μμ΄ μμ΄λ μ¬μ©ν μ μλ€.