본문 바로가기

GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software)47

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.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 :: 적응자(Adapter) [적응자(Adapter) - 클래스, 객체 구조(Class, Object Structural)] 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 적응(변환)시킨다. 서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작시킨다. 래퍼(Wrapper) 이미 개발된 클래스의 인터페이스를 수정할 수 없다면, Shape와 TextView 인터페이스에 둘 다 맞도록 우리가 개발한 TextShape 클래스를 조정해야 한다. -Shape의 인터페이스와 TextView의 구현을 모두 상속받는다. → 적응자 패턴 클래스 버전 -TextView의 인스턴스를 TextShape에 포함시키고, TextView 인터페이스를 사용하여 TextShape를 구현한다. → 적응자 패턴 객체 버전 TextShape = 적응자(.. 2020. 4. 25.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 4장 구조 패턴 [Chapter 4.구조 패턴(Structural Pattern)] 구조 패턴은 더 큰 구조를 형성하기 위해 어떻게 클래스와 객체를 합성하는가와 관련된 패턴이다. 구조 클래스 패턴은 상속 기법을 이용하여 인터페이스나 구현을 복합한다. 이 패턴은 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 양 사용할 필요가 있을 때 매우 유용한 방법이다. 한 가지 예가 적응자 패턴을 사용한 클래스 형태이다. 일반적으로 적응자는 어떤 인터페이스가 다른 인터페이스를 따르게 만들어 서로 다른 인터페이스들의 통일된 추상을 제공한다. 이를 가능하게 하려고, 적응자 클래스는 적응 대상 클래스(adaptee)에서 특성들을 상속받아, 적응 대상자에 정의된 인터페이스를 마치 자신이 제공하는 것처럼 보여준다. 구조 객체 패턴은 .. 2020. 4. 24.