2020.12.04 lamp , heater 고급자바

 package kr.or.ddit.nonCommand;



//수신자 역할의 클래스 ==> 실제 실행될 클래스 

public class Lamp {

public void turnOn() {

System.out.println("램프를 킵니다.");

}


}



------------
package kr.or.ddit.nonCommand;

public class Heater {
public void powerOn() {
System.out.println("히터를 킵니다.......");
}

}



----



package kr.or.ddit.okCommand;


//Lamp 를 사용하는 ICommand 인터페이스를 구현한 클래스 
public class LampCommandImpl implements ICommand {

private Lamp lamp;

public LampCommandImpl(Lamp lamp) {

this.lamp = lamp;
}



@Override
public void excute() {
lamp.turnOn();

}

}


---------

package kr.or.ddit.okCommand;


//수신자의 기능을 수행하는 
public interface ICommand {
public void excute(); 
}


-----

package kr.or.ddit.okCommand;


//ICommand 를 구현한 Heater 를 사용하는  클래스
public class HeaterCoomandImpl implements ICommand {

private Heater heater; 
public HeaterCoomandImpl(Heater heater) {
this.heater = heater; 
}
@Override
public void excute() {
heater.powerOn();

}

}


------

package kr.or.ddit.okCommand;


//호출자 역할의 클래스
public class OkCommand {
private ICommand command; 
public void setCommand(ICommand command) {
this.command = command; 
}
public void run() {
command.excute();
}
}



---------------


package kr.or.ddit.okCommand;

public class OkCommandTest {

public static void main(String[] args) {
//램프 켜기 
OkCommand test = new OkCommand(); 
Lamp lamp = new Lamp(); 
ICommand lampCom = new LampCommandImpl(lamp); 
test.setCommand(lampCom);
test.run();
//히터켜기 
Heater heater = new Heater(); 
ICommand heaterCom = new HeaterCoomandImpl(heater); 
test.setCommand(heaterCom);
test.run();
}

}





댓글