반응형
개인적으로 필요해서 간단히 패턴을 익히고자 나만의 포스팅.
public interface Command {
public void execute();
}
범용적인 기능이 구현된 클래스... 추가적인 인자를 받아 더 디테일한 기능을 구현하게 된다.
public class Light {
String location = "";
public Light(String location) {
this.location = location;
}
public void on(){
System.out.println(location + " light is on");
}
public void off(){
System.out.println(location + " light is off");
}
}
Ligth 객체의 기능을 호출할 수 있는 명령집합 객체
public class LightOnCommand implements Command{
Light light;
public LightOnCommand(Light light) {
this.light = light;
}
@Override
public void execute() {
light.on();
}
}
동일한 다른 기능
public class LightOffCommand implements Command{
Light light;
public LightOffCommand(Light light) {
this.light = light;
}
public void execute() {
light.off();
}
}
범용적으로 컨트롤 할수 있는 리모컨 객체
public class SimpleRemoteControl {
Command slot;
public SimpleRemoteControl() {
}
public void setCommand(Command command) {
this.slot = command;
}
public void buttonWasPressed(){
slot.execute();
}
}
마지막으로 실사용.
public class RemoteControlTest {
public static void main(String[] args) {
SimpleRemoteControl remote = new SimpleRemoteControl();
Light light = new Light("거실");
//각 기능을 세부적으로 정의한 명령클래스 객체를 만든다.
// 각 명령 클래스에는 Command 기능을 구현했다.
LightOnCommand lightOn = new LightOnCommand(light);
LightOffCommand lightOff = new LightOffCommand(light);
//remote.setCommand(lightOn);
remote.setCommand(lightOff);
remote.buttonWasPressed();
}
}
반응형
'슬기로운 자바 개발자 생활 > Java more' 카테고리의 다른 글
자바 스트림 Java stream 01 (0) | 2023.05.28 |
---|---|
자바8 날짜함수 관련. (0) | 2023.05.26 |
자바로 윤년 체크하기 (0) | 2023.03.29 |
Google Guava EventBus 라이브러리 사용법 (0) | 2023.01.22 |
자바 PDF 파일 만들기 (6) | 2022.12.20 |
댓글