본문 바로가기

전체 글89

장식자 패턴 (Decorator Pattern) 사용 의도 객체에 동적으로 새로운 책임을 추가할 수 있게 합니다. 참고 https://gdtbgl93.tistory.com/9 위의 글을 참고하여, 같은 예제를 따라해보고 복습해봅니다~! 예시 위의 참고글에서 따온 아래와 같은 예시가 있다면 카라멜 프라푸치노에, 헤이즐럽 시럽 한 번 넣고 자바칩 넣어주세요! 아 그리고 카라멜 드리즐이랑 초코 드리즐 깔아주시구요 위의 메뉴에 대해 하나의 클래스를 만든다면, 모든 조합에 대해서 클래스를 만들어야하는, 매우 비정상적인 상황이 벌어집니다. 위의 경우처럼, 많은 조합에 대해서 다뤄야 하는 경우, Decorator Pattern 을 사용하는 것이 적절해보입니다. Decorator Pattern 참여자 설명 Component 동적으로 기능을 추가해야 할 가능성이 있는.. 2021. 7. 10.
복합체 패턴 (Composite Pattern) 사용 의도 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴입니다. 예시 쇼핑몰에서 어떤 상품을 봤을 때 그 단일상품을 볼 수도있고 단일상품으로 이뤄진 하나의 상품도 볼 수 있을때 단일상품 복합상품 RAM, GPU, CPU 컴퓨터 하의, 상의, 신발 마네킹이 입고있는 옷 상품 위와같은 경우, 쇼핑몰에서 단일상품과 복합상품을 하나로 인지할 수 있도록 복합체 패턴을 사용하여 구현합니다. 구현 아래와 같이 구현합니다. public abstract class ProductComponent { public void addChild(ProductComponent productComponent) { throw new UnsupportedOperationException(); } pub.. 2021. 6. 19.
브릿지 패턴 (Bridge Pattern) 사용 의도 추상화와 구현을 분리하여 유연함을 증가시키고 재사용성을 증가시킵니다. 예시 메시지를 보내는 어플리케이션을 개발한다고 가정해봅니다. TextMessage 와 EmailMessage 를 보내는 어플리케이션을 개발하는 과정에서 아래와 같은 설계를 하였습니다. 구조 Message 메시지에 대한 추상화 클래스 TextMessage / EmailMessage 상세한 메시지 (Text / Email) 에 대한 추상클래스 TextMessageSender / EmailMessageSender TextMessage 와 EmailMessage 를 보내는 클래스 단점 추상화인 Message (Client 에 제공) 와 TextMessageSender (구현체) 가 너무 밀접하게 통합되어있습니다. 추상화에 선택적으로.. 2021. 6. 18.
어댑터 패턴 (Adapter pattern) 사용 의도 클래스의 인터페이스를 사용자가 기대하는 인터페이스로 적응시킵니다. 구조 합성을 이용한 패턴과, 상속을 이용한 패턴 2가지 Adapter Pattern 이 있습니다. GOF pattern 설명 Client 외부 Library 를 사용하려는 클라이언트이다. Target Adapter 가 구현하는 인터페이스거나 혹은 상속하는 클래스 Adapter RestTemplate 의 기능을 사용하여 사용자가 기대하는 인터페이스로 변환해주는 Adapter Adaptee 외부 Library UserAdaptee 로 외부에 호출하여 유저의 정보를 가져온 뒤 유저의 등급을 VIP 로 작업해야 하는 경우 작업 수행 주체 외부에서 유저의 정보를 가져오는 작업 UserAdaptee 유저에게 VIP 등급을 부여하는 작업 V.. 2021. 6. 12.