프로그래밍/자바 디자인 패턴
자바 디자인 패턴 튜토리얼 - 행동 디자인 패턴 - 자바 명령 패턴
Ericlee
2021. 4. 18. 02:33
반응형
명령 패턴은 데이터 기반 디자인 패턴입니다. 이것은 행동 패턴 중 하나입니다.
요청은 객체 아래에 명령으로 래핑되고 호출자 객체로 전달됩니다.
Invoker 객체는 해당 객체에 명령을 전달하고 해당 객체는 명령을 실행합니다.
예제
import java.util.ArrayList;
import java.util.List;
interface Command {
void execute();
}
class MouseCursor {
private int x = 10;
private int y = 10;
public void move() {
System.out.println("Old Position:"+x +":"+y);
x++;
y++;
System.out.println("New Position:"+x +":"+y);
}
public void reset() {
System.out.println("reset");
x = 10;
y = 10;
}
}
class MoveCursor implements Command {
private MouseCursor abcStock;
public MoveCursor(MouseCursor abcStock) {
this.abcStock = abcStock;
}
public void execute() {
abcStock.move();
}
}
class ResetCursor implements Command {
private MouseCursor abcStock;
public ResetCursor(MouseCursor abcStock) {
this.abcStock = abcStock;
}
public void execute() {
abcStock.reset();
}
}
class MouseCommands {
private List orderList = new ArrayList();
public void takeOrder(Command order) {
orderList.add(order);
}
public void placeOrders() {
for (Command order : orderList) {
order.execute();
}
orderList.clear();
}
}
public class Main {
public static void main(String[] args) {
MouseCursor cursor = new MouseCursor();
MoveCursor moveCursor = new MoveCursor(cursor);
ResetCursor resetCursor = new ResetCursor(cursor);
MouseCommands commands= new MouseCommands();
commands.takeOrder(moveCursor);
commands.takeOrder(resetCursor);
commands.placeOrders();
}
}
위의 코드는 다음 결과를 출력합니다
Old Position:10:10
New Position:11:11
reset
반응형