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();
}
}
댓글
댓글 쓰기