-
15주차 - 커맨드 패턴,Unity/Unity 스파르타 2024. 3. 28. 20:54728x90
커맨드 패턴에 대해 알아보기.
커맨드 패턴은 요청을 객체로 캡슐화하여 요청과 수신자 사이의 결합을 느슨하게 만드는 디자인 패턴
사전 용어 정리 하기
Command 패턴을 보기 전에 몇가지 용어를 정리하고 가보자.
- Client — 커맨드 객체를 생성, 인보커 객체를 통해 리시버 객체 에게 할 행동을 전달함
- Invoker — 커맨드를 저장함 리시버 객체 에게 행동을 전달하는 객체 (ex 버튼 이나 단축키의 역할)
- Command — 리시버 객체의 정보 + 행동이 들어 있는 객체
- Receiver — 행동을 하는 객체
- setCommand() — 인보커 객체에 정의 되어 있는 메서드, 클라이언트가 실행한다. 이 메서드가 호출되면, 커맨드 객체가 같이 호출 된다.
- execute() — 해당 호출로 커멘드 객체에 있는 일련의 과정들이 수행 된다.
Interface CommandExcute(), Undo();public class Invoker {private readonly Stack<ICommand> _undoStack = new Stack<ICommand();public void AddCommand(ICommand command) { _undoStack.Push(command); }public void Undo() { if (_undoStack.Any()) { var command = _undoStack.Pop(); command.Undo(); } } }TileDrawCommand(TileBase,Vector2int)this.base = TileBasethis.position = Vector2intExcute(){TileMap.SetTile(TileBase,Vector2int};Undo(){TileMap.SetTIle(null,Vector2int}var tdc = new TileDrawCommand(TileBase, Vector2Int);var invoker = new Invoker();invoker.AddCommand(tdc);invoker.Undo();728x90'Unity > Unity 스파르타' 카테고리의 다른 글
16주차 - 인게임용 커스텀 에디터(타일),버튼 색 스크립트로 통제(ColorBlock) (0) 2024.04.03 15주차 - 커맨드 패턴 활용(클래스 다이어그램) (0) 2024.03.29 15주차 - 화염 방사기 기믹 만들기 (0) 2024.03.27 15주차 - Selection.activeGameObject, EditorApplication.ExecuteMenuItem() (0) 2024.03.26 15주차 - GUI 공부(GUIUtility.GetControlID(),Event,HandleUtility.Repaint()) (0) 2024.03.25