디자인 패턴 3

디자인 패턴 - 전략 패턴(Strategy pattern)과 디자인 패턴에 대한 고찰_feat(우테코 - 자동차 경주)

우테코 1단계 level 1 의 자동차 경주 미션 리팩토링을 진행하고, 미션 리뷰어에게 전략 패턴에 대한 이야기를 들었다. 나는 사실 전략 패턴에 대해 잘 알지 못했다. 그런데 전략 패턴을 이미 구현했다는 피드백을 보고 신기함을 느꼈다. 어떻게 제대로 모르는 것을 구현할 수 있지? 이 궁금증을 시작으로 전략 패턴을 더 자세히 공부하기로 했다. 전략 패턴(Strategy Pattern)? '알렉산더 슈베츠' 저자의 '디자인 패턴에 뛰어들기' 라는 책에서는 이렇게 설명하고 있다. (이 글은 위 링크 글을 보고 공부하여 정리한 내용으로 원문을 참조하시는 것을 추천한다.) 전략 패턴은 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환할 수 있도록 하는 행동 디자인 패..

디자인 패턴 - 프록시 패턴(Proxy pattern) 자바 코드 예시로 보기

먼저 프록시(proxy)의 뜻을 살펴봅시다. 위처럼 proxy 는 대리, 대리인, 대용물 이라는 뜻을 가집니다. 그렇다면 프록시 패턴이라 하면, 누군가가 어떠한 일(역할)을 대신 해주는 모습의 디자인 패턴임을 예상할 수 있겠네요. Proxy pattern(프록시 패턴) 프록시 패턴은 클라이언트가 실제 서비스 객체를 대신하는 객체를 제공해주는 구조 디자인 패턴입니다. 클라이언트의 요청을 수신하고 일부 작업들을 수행한 다음 요청을 서비스 객체에 전달하는 형태이지요. 여기서 일부 작업들에는 흔히 접근 제어, 캐싱 등이 있습니다. 프록시 객체는 서비스 객체와 같은 인터페이스를 가지기 때문에 클라이언트에 전달되면 실제 객체와 상호적으로 교환이 가능합니다. 우리가 코드를 변경할 수 없는 클래스에 몇가지의 행동들을 ..

디자인 패턴 - 데코레이터 패턴(Decorator pattern) 자바 코드 예시로 보기

데코레이터 패턴이란? 데코레이터 패턴은 객체지향 프로그래밍에서 자주 사용되는 디자인 패턴입니다. 어떤 객체를 특수한 Wrapper 객체들 내에 감싸서(wrap, decorate) 새로운 행동을 가지도록 하는 것입니다. 이렇게만 설명하면 크게 감이 안 올 수 있는데요. 먼저 구체적인 프로그램을 만든다고 가정해서 이 프로그램에 데코레이터 패턴을 적용해 나가는 것으로 설명하겠습니다. 문제 상황 우리는 사용자들에게 알림을 보내는 `Notifier` 라이브러리를 만들고 있다고 합시다. `Notifier` 는 사용자들에게 중요한 이벤트에 대해 이메일로 알림을 보내줄 수 있는 기능을 가집니다. 클라이언트 역할을 하는 타사 이메일 애플리케이션은 `Notifier` 객체를 한 번 생성하고, 설정한 후에 중요한 이벤트가 ..