Structural Patterns - Facade Intent 한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스를 제공하는 패턴으로, 서브시스템을 사용하기 쉽도록 상위 수준의 인터페이스를 정의한다. Utility 복잡한 서브시스템에 대한 단순한 인터페이스 제공일 필요할 때 Facade Pat...
Design Patterns - Decorator
Structural Patterns - Decorator Intent 객체에 동적으로 새로운 책임을 추가할 수 있게 한다. 기능을 추가하려면, 서브클래스를 생성하는 것보다 융통성 있는 방법을 제시한다. 랩퍼(Wrapper) 라고도 불린다. Utility 동적으로 또한 투명하게(transparent), 즉 다른 객체에 영향을 주지...
Design Patterns - Composite
Structural Patterns - Composite Intent 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성한다. 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 두룰수 있게 한다. Utility 부분-전체의 객체 계통을 표현하고 싶을 때 사용자가 객체의 합성으로 생긴 복합 객체와 개개의 객...
Design Patterns - Bridge
Structural Patterns - Bridge Intent 구현에서 추상을 분리하여, 이들이 독립적으로 다야엉을 가질 수 있도록 한다. 핸들(Hanle), 구현부(Body) 라고도 불린다. Utility 추상적 새념과 이에 대한 구현 사잉의 지속적인 종속 관계를 피하고 싶을 때 런타일에 구현 방법을 선택하거나 구현 내용을...
Design Patterns - Adapter
Structural Patterns - Adapter Intent 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 정응(변환)시킨다. 서로 일치하지 않는 인터페이스를 가지는 클래스들을 함께 동작시킨다. Utility 기존 클래스를 사용하고 싶은데 인터페이스가 맞지 않을 때 이미 만든 것을 재사용하고자 하나 이 재사용 가...
Design Patterns - Singleton
Creational Patterns - Singleton Intent 오직 한개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다. Utility 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점으로 모든 사용자가 접근할 수 있도록 할 때 유일한 인스턴스가 서브클래싱으로 확장되어야 하...
Design Patterns - Prototype
Creational Patterns - Prototype Intent 원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성한다. Utility 인트턴스화할 클래스를 런타임에 지정할(동적 로딩) 떄 제품 클래스 계통과 병렬적으로 만드는 Factory Class 피하고 싶을...
Design Patterns - Factory Method
Creational Patterns - Factory Method Intent 객페를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 하도록 한다. 때때로 Factory Method는 Virtual Constructor라고도 불린다. Utility 어떤 클래스가 자신이 생성해야 ...
Effective C++ - Item.2
#define을 쓰려거든 const, enum, inline을 떠올리자 가급적 전처리기(Preprocessor) 보다 컴파일러를 가까이 하자 #define의 경우 전처리기에서 이미 치환시켜 값을 대입하기 때문에 컴파일러가 쓰는 기호 테이블에 값이 들어가지 않는다. 따라서 숫자 상수로 대체된 코드에서 컴파일 에러가 발생한다면 이를 디버깅하...
Effective C++ - Item.1
C++를 언어들의 연합체로 바라보는 안목은 필수 오늘날의 C++는 다중패러다임 프로그래밍 언어(Multiparadigm Programming Language) 라고 불리운다. 절차적(Procedural) 프로그래밍 을 기본으로 하여 객체 지향(Object Oriented) , 함수식(Functional) , 일반화(Generic) 프로그래밍을 포함...