Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바
- Kotlin
- Microservice
- CRD
- kubernetes
- nGrinder
- 코틀린
- 헬름
- 쿠버네티스
- Semaphore
- 마이크로서비스
- cloud native
- Spring
- MSA
- Algorithm
- devops
- spring microservice
- 머신러닝
- decorator 패턴
- Stress test
- ansible
- 익명클래스
- 동기화
- cloud native java
- ingress
- Adapter 패턴
- 클라우드 네이티브
- 클라우드 네이티브 자바
- MySQL
- java
Archives
- Today
- Total
카샤의 만개시기
Command Pattern 본문
Command 패턴은 명령(command)를 객체화하여 특정 객체에 명령을 내리는 패턴이다.
Command 패턴은 Invoker(발동자), Command(명령), Receiver(수신자)로 구성된다.
- Invoker(발동자): 커멘드을 가지고 있으며 수신자에게 커멘드를 요청한다
- Command(명령): 특정 작업
- Receiver(수신자): 발동자로부터 수신한 커멘드를 수행한다.
예제
스위치로 전등을 껏다 키는 예제를 살펴보자.
스위치는 Invoker가 되고, Light는 Receiver가 된다.
마지막으로 On/Off 명령은 Command가 된다.
public interface Command {
void execute();
}
// Command (명령)
public class LightOffCommand implements Command {
Light m_light;
public LightOffCommand(Light light) {
m_light = light;
}
public void execute() {
m_light.TurnOff();
}
}
// Command (명령)
public class LightOnCommand implements Command {
Light m_light;
public LightOnCommand(Light light) {
m_light = light;
}
@Override
public void execute() {
m_light.TurnOn();
}
}
// Receiver (수신자)
public class Light {
public void TurnOn() {
System.out.println("불이 켜졌습니다");
}
public void TurnOff() {
System.out.println("불이 꺼졌습니다");
}
}
// Invoker (발동자)
public class LightSwitch {
Command onCommand;
Command offCommand;
public LightSwitch(Light light) {
onCommand = new LightOnCommand(light);
offCommand = new LightOffCommand(light);
}
public void On() {
onCommand.execute();
}
public void Off() {
offCommand.execute();
}
}
장점
커멘드가 객체화된다는 것이 큰 장점이다.
이는 캡슐화가 보장되고, 의존성이 분리되 관리가 편해진다는 것을 의미한다.
또한 재사용성 역시 좋아진다.
단점
커멘드가 늘어날때마다 관리해야 하는 객체가 늘어나고, 그로인해 복잡도가 높아질수 있다.
'Foundation > Design Pattern' 카테고리의 다른 글
Adapter 패턴과 Decorator 패턴의 차이 (0) | 2019.10.27 |
---|---|
Decorator 패턴 (0) | 2019.10.27 |
Adapter 패턴 (0) | 2019.10.27 |
Facade Pattern (0) | 2019.10.19 |
Comments