본문 바로가기

디자인패턴10

플라이급 패턴 (Flyweight Pattern) 사용 의도 객체의 공유를 통해, 인스턴스의 생성을 최적화합니다. 예시 레이싱 경주에서, 1000대의 자동차를 가지고 경기를합니다. 하지만 자동차의 인스턴스의 크기가 매우 크다. 자동차를 운전하는 운전수의 인스턴스는 크기가 작다. 위의 조건에서 객체의 공유를 통해 인스턴스의 생성을 최적화합니다. 구조 참여자 설명 Flyweight Flyweight 클래스들의 추상클래스 혹은 인터페이스입니다. ConcreteFlyweight Flyweight 를 상속받거나 구현한, 공유될 수 있는 객체들입니다. UnsharedConcreteFlyweight Flyweight 를 상속받거나 구현한, 공유하지 않는 객체들입니다. FlyweightFactory Flyweight 를 생성하는 팩토리입니다. Client 가 Flyw.. 2021. 7. 12.
퍼사드 패턴 (Facade Pattern) 사용 의도 한 서브시스템 내의 인터페이스 집합에 대해, 획인화 된 하나의 인터페이스를 제공하는 패턴이다. 요약 스프링을 개발하면서 지금껏 사용해 왔던, Service 하위에 Repository 에서 데이터를 가져오고, 이를 가공하는 등 하나의 API call 을 Facade Pattern 으로 볼 수 있다고 생각한다. 2021. 7. 10.
장식자 패턴 (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.