구조 패턴 4

[디자인 패턴] 구조 패턴 정리

※ 구조 패턴을 총 정리 종류 특징 적응자 Adapter - 서로 관련 없는 두 개의 인터페이스를 가져와 새로운 인터페이스로 통합하는 것 - 다른 클래스 인스턴스를 참조자로 관리하거나 다중 상속으로 구현. 가교 Bridge - 클래스 계통을 추상 표현과 구현부로 나누고 구현부 인스턴스를 통한 구현 기능을 제공. - 구현부 인스턴스를 참조자로 관리. 복합체 Composite - 객체의 전체와 부분을 포괄하여 표현할 수 있는 추상 클래스를 정의. - 소유 관계를 트리 형태로 나타내고 자식 연산에 대한 인터페이스를 제공. - Leaf 클래스는 자식을 포함하지 않는 독립적인 객체. 장식자 Decorator - 어떤 객체에 새로운 기능을 추가하고 싶을 때 덧대는 방법. - Decorator는 덧대고자 하는 대상 ..

[디자인 패턴] 구조 패턴 (7) 프록시 Proxy

프록시 (Proxy) 패턴 1. 의도 다른 객체에 대한 접근을 대신 수행하는 대리 객체를 둔다. 2. 활용 티스토리의 글과 같이 한 문서에는 글, 이미지, 링크 개체 등 여러 그래픽 요소가 포함되어 있을 수 있다. 문서를 화면에 띄우기 위해 모든 그래픽 요소를 그려야 하는데 모든 문서에 대한 필요 요소를 메모리에 올릴 필요는 없다. 오버레이와 같이 운영체제 기능도 있지만 사용자 코드로 필요한 객체만 메모리에 올릴 시간을 결정하도록 한다. 따라서 현재 보고 있는 문서 내용에 관련된 객체만 필요할 때 생성하는 방식으로 이미지와 같이 데이터 용량이 큰 객체에 적용한다. 프록시 패턴은 자신이 객체를 생성하지 않고 사용자로부터 접근이나 요청이 있을 때 생성된 객체를 사용하도록 한다. 이로 현재 보고 있는 문서에 ..

[디자인 패턴] 구조 패턴 (6) 플라이급 Flyweight

플라이급(Flyweight) 패턴 1. 의도 표현 상태가 적은 객체들을 공유함으로 효율적으로 시스템을 지원 2. 활용 응용프로그램이 대량의 객체를 사용할 때 객체 수가 많아져서 전체가 사용하는 메모리 용량이 클 때 객체를 구성하는 상태가 적을 떄 예시) 문서 편집기의 문자를 표현하는 방법 문서 편집기의 내용을 표시하기 위애 여러 그래픽 요소를 객체로 관리하며 이는 효과적인 표시를 가능하게 한다. 만약 문서 내용을 나타내는 문자 하나하나를 객체로 관리한다면, 굉장히 많은 객체를 문서마다 보유하고 이는 메모리 문제와 그래픽을 그리는 실행시간이 크게 지연될 것이다. 플라이급 객체는 공유 가능한 객체들을 의미하고 본질적(intrinsic) 상태와 부가적(extrinsic) 상태로 구분된다. 본질적 상태는 플라이..

[디자인 패턴] 구조 패턴 (5) 퍼사드 Facade

퍼사드 (Facade) 패턴 1. 의도 전체 서브시스템을 포괄하는 인터페이스를 정의. 2. 활용 복잡한 서브시스템에 대한 단순한 인터페이스 제공이 필요할 때 사용자와 서브시스템의 연관성을 줄이기 위해 서브 시스템을 계층화 시키고 퍼사드를 통해 서브 시스템을 접근 3. 참여자 퍼사드: 통합된 인터페이스를 제공, 서브시스템의 기능을 모두 알고 있으며 사용자의 요청을 서브시스템 객체에 전달한다. 서브시스템 클래스: 서브시스템의 기능을 구현하고 퍼사드 객체로 할당된 작업을 처리하지만 퍼사드를 접근할 수는 없다. 4. 협력방법 사용자는 퍼사드가 제공하는 인터페이스를 통해 서브 시스템의 기능을 이용한다. 5. 결과 1) 서브시스템 구성요소를 보호한다. 2) 서브시스템과 사용자 코드간의 결합도를 약하게 한다. 3) ..