반응형
설명
커맨드 패턴은 요청을 객체의 형태로 캡슐화하여 사용하는 패턴입니다.
객체의 행동을 변화시키는 요구나 명령을 클래스로 표현하는 패턴입니다.
왜 사용해야 하는지
다양한 요청을 안전하게 처리할 수 있다.
각각의 커맨드들은 특정 객체에 의존하지 않도록 만들어지므로 재활용성이 매우 높습니다.
예시
저희는 이제 리모컨을 만들어 보겠습니다.
리모컨에는 4개의 버튼과 4가지 기능이 있는데요.
우선 커맨드를 인터페이스로 정의해보겠습니다.
public interface ButtonCommand {
public void run();
}
그다음 4가지 버튼의 기능을 만들어 보겠습니다.
public class PowerOnButton implements ButtonCommand {
@Override
public void run() {
System.out.println("파워를 킴");
}
}
public class PowerOffButton implements ButtonCommand{
@Override
public void run() {
System.out.println("파워를 끔");
}
}
public class ChannelUpButton implements ButtonCommand{
@Override
public void run() {
System.out.println("채널 위로 올림");
}
}
public class ChannelDownButton implements ButtonCommand{
@Override
public void run() {
System.out.println("채널 아래로 내림");
}
}
이제 클라이언트에서 리모컨을 실행해보겠습니다.
public class Client {
public static void main(String[] args) {
Remote 리모컨 = new Remote();
ButtonCommand powerOnButton = new PowerOnButton();
ButtonCommand powerOffButton = new PowerOffButton();
ButtonCommand channelUpButton = new ChannelUpButton();
ButtonCommand channelDownButton = new ChannelDownButton();
리모컨.setCommand(powerOnButton);
리모컨.buttonPress();
리모컨.setCommand(channelUpButton);
리모컨.buttonPress();
리모컨.setCommand(channelDownButton);
리모컨.buttonPress();
리모컨.setCommand(powerOffButton);
리모컨.buttonPress();
}
}
이처럼 행위를 캡슐화하여 사용하는것이 커맨드 패턴입니다.
Java 예시
스케줄러, 스레드 풀, 작업 큐 등등이 있습니다.
Runnable (Java Platform SE 8 )
반응형
'프로그래밍 > 디자인패턴' 카테고리의 다른 글
자바 데커레이터(Decorator) 패턴 (0) | 2022.11.15 |
---|---|
자바 전략 패턴 (0) | 2022.11.03 |
자바 프록시 패턴 (0) | 2022.11.01 |
자바 빌더 패턴 (0) | 2022.10.30 |
자바 팩토리 메서드 패턴 (0) | 2022.10.25 |
댓글