반응형 설계3 Command Pattern, 커맨드 패턴 커맨드 패턴이란? 커맨드를 객체로 만들어서 이를 사용해 나중에 실행하거나, 반복하거나 취소할 수 있도록 하는 패턴이다. 현실에서는 음식점에 손님으로 방문해 주문을 하면 주방에 주문서를 꽂아놓는다. 요리사는 이를 보고 요리를 한다. 주문서에는 음식과 관련된 모든 정보를 가지고 있다. 이때 이 주문서가 커맨드 역할을 하는것 이다. 왜 사용해야 하는가? 클라이언트는 요청을 객체로 표현하기 때문에 수신자에게 직접적으로 의존하지 않게 된다. 실행 취소 및 재 실행 기능을 쉽게 구현할 수 있다. 간단한 커맨드들로 복잡한 커맨드를 조합할 수 있다. 기존의 코드를 건들지 않고 새 커맨드를 추가할 수 있다. 언제 사용해야 하는가? 요청과 수신자를 분리하고 싶을 때 요청의 로깅이 필요할 때 늦게 실행하거나 실행 취소 및 .. 2024. 2. 27. Chain of Responsibility Pattern, 책임 연쇄 패턴 책임 연쇄 패턴이란? 요청을 사슬처럼 여러 독립적인 핸들러 객체를 순차적으로 지나치면서 각자 가지고 있는 책임을 해결하는 방법이다. 마치 공장에서 각 장치별로 담당하는 부분만 처리하는 것과 같다. 대표적으로 스프링의 필터가 이러한 책임 연쇄 패턴을 이용하고 있다. 왜 사용해야 하는가? 요청의 처리 순서를 제어할 수 있다. 단일 책임 원칙을 지킬 수 있다. (작업하는 각각의 객체들의 책임 분리) 개방/폐쇄 원칙을 지킬 수 있다. (새로운 핸들러추가시 기존 코드 수정하지 않는다. 언제 사용해야 하는가? 요청 처리가 여러 단계로 이루어져야 하는 경우(하지만 요청 유형과 순서들을 미리 알 수 없는 경우) 런타임시에 동적으로 핸들러를 관리해야 하는 경우 핸들러를 특정 순서로 실행해야 하는 경우 구현 예시 (자바).. 2024. 2. 27. Flyweight Pattern, 플라이웨이트 패턴 플라이웨이트란? 메모리 사용량을 줄이기 위해서 사용된다. 수많은 객체를 생성할 때 객체들의 공통된 부분을 공유하여 메모리의 사용량을 줄일 수 있다. 예를 들어 배틀그라운X에서 나무, 총알, 파편등 많은 입자들을 각각 별도의 객체로 구현했다면 메모리가 매우 많이 필요하게 되어 사양이 매우 좋은 사람 빼고는 게임을 원활하게 진행하기 어려웠을 것이다. 이러한 부분을 플라이웨이트 패턴을 통해서 최대한 메모리를 적게 사용하도록 만들어서 슈퍼컴퓨터가 아닌 일반 사용자도 게임을 즐길 수 있게 된다. 왜 사용해야 하는가? 메모리 사용량을 줄일 수 있기 때문이다. 객체 생성 비용이 높은 경우 이를 줄여주어 성능 향상에 도움이 된다. 어떤 경우에 사용해야 하는가? 많은 수의 유사한 객체를 생성해야 하는 경우 메모리 사용량.. 2024. 2. 14. 이전 1 다음 반응형