SW171 GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 :: 프록시(Proxy) [프록시(Proxy) - 객체 구조] 2020. 5. 1. GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 :: 플라이급(Flyweight) [플라이급(Flyweight) - 객체 구조] 오유를 통해 많은 수의 소립(fine-grained) 객체들을 효과적으로 지원한다. 문자 하나를 객체로 관리하는 데는 비용이 많이 든다. 얼마되지 않는 분량의 문서라 하더라도 수천 개의 문자 객체를 포함할 것이고, 이는 엄청난 메모리와 예상치 못한 실행 시간 낭비를 가져올 수 있다. 플라이급 패턴은 이런 문제를 객체 공유를 통해 해결하는 방법을 보여준다. 플라이급 객체는 공유 가능한 객체이며, 각각의 상황에서는 독립적인 객체로 동작한다. 이것은 공유될 수 없는 객체의 인스턴스와 구분이 안 된다는 의미이다. 플라이급 패턴에서 중요한 개념은 본질적(instrinsic) 상태와 부가적(extrinsic) 상태의 구분이다. 본질적 상태는 플라이급 객체에 저장되어야 .. 2020. 4. 30. GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 :: 퍼사드(Facade) [퍼사드(Facade) - 객체 구조] 한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스를 제공하는 패턴이다. 서브시스템들 사이의 의사소통 및 종속성을 최소화하려는 것이다. Compiler 클래스(퍼사드 객체) 사용자에게는 컴파일러 시스템을 사용하는 데 필요한 가장 필수적인 인터페이스만을 제공하고, 내부적으로는 컴파일러 기능성을 구현하는 클래스들을 함께 동작하도록 묶어주는 역할도 수행한다. -복잡한 서브시스템에 대한 단순한 인터페이스 제공이 필요할 때 -추상 개념에 대한 구현 클래스와 사용자 사이에 너무 많은 종속성이 존재할 때. 서브시스템에 정의된 모든 인터페이스가 공개되면 빈번한 메서드 호출이 있을 수 있으나, 이런 호출은 단순한 형태로 통합하여 제공하고 나머지 부분은 내부적으로 .. 2020. 4. 29. GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 :: 장식자(Decorator) [장식자(Decorator) - 객체 구조] 객체에 동적으로 새로운 책임을 추가할 수 있게 한다. 랩퍼(Wrapper) 새로운 서비스의 추가가 필요할 때 이를 해결하는 일반적인 방법은 상속을 이용하는 것이다. 즉, 이미 존재하는 클래스를 상속받고, 또 다른 클래스에서 테두리 속성을 상속받아 이 서브클래스의 인스턴스에 테두리가 있도록 하는 방법이다. 더 나은 방법으로 지금 필요한 테두리를 추가하는 다른 객체에다가 해당 구성요소를 둘러싸는 것이다. 이렇게 무엇인가를 감싸는 객체를 장식자(decorator)라고 한다. 장식자는 자신이 둘러싼 요소, 구성요소가 갖는 인터페이스를 자신도 동일하게 제공하므로, 장식자의 존재는 이를 사용하는 사용자에게 감춰진다. 즉, 장식자는 자신이 둘러싼 구성요소로 전달되는 요청을.. 2020. 4. 28. GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 :: 복합체(Composite) [복합체(Composite) - 객체 구조] 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성한다. 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴이다. 2020. 4. 27. GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 :: 가교(Bridge) [가교(Bridge) - 객체 구조] 구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 한다. 핸들/구현부(Handle/Body) 2020. 4. 26. 이전 1 2 3 4 5 6 7 8 ··· 29 다음