행동패턴 중 하나인 상태패턴에 대해 알아봅시다. 정의 상태패턴은 객체의 내부 상태가 변경될 때 해당 객체가 자신의 행동을 변경할 수 있도록 하는 디자인 패턴입니다. 예시 1000원짜리 상품을 판매하는 자판기가 있습니다. 자판기의 상태는 코인이 부족할때, 상품을 구매할만큼 코인이 있을때로 나뉠 수 있습니다. 자판기의 상태에 대해 enum으로 상태를 만들었습니다. public enum State { NOCOIN, ENOUGHCOIN, } 다음은 자판기 클래스입니다. 코인입력했을때(insertCoin) 자판기 상태에 따라 행동이 달라집니다. switch문을 통해 상태에 따른 행동을 결정합니다. 마찬가지로 상품을 구매할때(buyProduct) 자판기 상태에 따라 행동이 달라집니다. public class Ven..
분류 전체보기
구조패턴 중 하나인 데코레이터 패턴을 알아봅시다. 의도 데코레이터는 객체들을 새로운 행동들을 포함한 특수 래퍼 객체들 내에 넣어서 위 행동들을 해당 객체들에 연결시키는 구조적 디자인 패턴입니다. 조금 더 쉽게 설명하자면 객체의 결합을 통해서 기능을 동적으로 유연하게 확장할 수 있게 해주는 디자인 패턴입니다. 문제 도로에 여러 기능을 조합하여 길을 표시하려고 합니다.어떤 길은 기본 도로 표시 기능만 사용하여 길을 표시하도록 하는 요구사항이 있습니다.어떤 길은 기본 도로 표시 기능에 차선을 추가하여 길을 표시하도록 하는 요구사항이 있습니다.어떤 길은 기본 도로 표시 기능에 교통량을 추가하는 요구사항이 있습니다.어떤 길은 기본 도로 표시와 차선, 교통량 모두 추가하여 길을 표시하라는 요구사항이 있습니다. 그렇..
행동패턴 중 하나인 템플릿 메서드 패턴을 알아봅시다. 의도 템플릿 메서드 패턴은 부모 클래스에서 알고리즘의 골격을 정의하지만, 해당 알고리즘의 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계들을 오버라이드 할 수 있도록 하는 행동 디자인 패턴입니다. 추상클래스인 부모를 두고 메인 로직을 작성한 뒤 로직 속에 있는 세부 단계들을 자식 클래스들이 오버라이드 하는 형태입니다. 문제 템플릿 메서드 패턴을 쓰게 되면 어떤 문제를 해결할 수 있을지 알아봅시다. 예를 들어서 소셜 네트워크를 통해 메신저를 제공하는 서비스가 있다고 합시다. 처음에는 트위터 서비스를 통해 메세지 전송 기능을 사용하였습니다. 메세지 전송은 로그인 -> 메세지 전송 -> 로그아웃 순의 로직이 있습니다. 시간이 흘러 페이스북 서비스..
구조패턴 중 하나인 퍼사드 패턴을 알아봅시다. 의도 퍼사드 패턴은 라이브러리에 대한, 프레임워크에 대한 또는 다른 클래스들의 복잡한 집합에 대한 단순화된 인터페이스를 제공하는 구조적 디자인 패턴입니다. 출처 쉽게 풀어 설명하면 내부 복잡한 구조와 로직에 대해 알 필요없이 단순화된 인터페이스만 제공하여 사용하면 되는 구조입니다. 문제 퍼사드 패턴이 나오게 된 배경에 대해 알아봅시다. 정교한 라이브러리나 프레임워크에 속하는 광범위한 객체들의 집합으로 어떠한 비즈니스 로직을 만든다고 상상해봅시다. 일반적으로 필요한 객체들을 초기화하고 객체들이 서로 상호작용하게 하며 로직에 따라 실행 순서를 정하는 등 작업을 수행합니다. 비즈니스 로직을 구현하였지만 로직을 사용하는 외부 클래스들이 세부 구현 사항들과 밀접하게 ..