2016년 4월 1일 금요일

[디자인 패턴] 시작

패턴은 GoF가 정의한 목적에 따라 3가지로 나뉩니다.

1. 생성패턴 (Creational Pattens)

 유연한 방법으로 객체의 집합을 생성하는 패턴으로 객체를 생성하고 참조하는 과정을 추상화하여, 객체의 생성과 조합 등에 구애받지 않고 프로그래밍할 수 있게 해줍니다. 즉, 특정 객체가 생성되거나 변경되도 전체 시스템의 변화는 최소로 만들어 시스템의 확장 혹은 유지보수에 최소비용이 들도록 만들어줍니다.

시스템 상에서 사용되는 객체의 변화에 따라 관련된 모듈이 의존적으로 동작하게 되는데 이 부분을 비 의존적으로 만든다면 시스템의 유지보수에 도움이 됩니다.

생성패턴의 종류에는 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤이 있습니다.


2. 구조패턴 (Structural Pattens)

변하는 부분과 변하지 않는 부분을 나누어 클래스를 설계하는 방법을 제시합니다.

구조패턴에는 어뎁터, 브릿지, 컴포지션, 데코레이터, 퍼사드, 플라이급, 프록시가 있습니다.


3. 행위패턴 (Behavioral Pattens)

객체나 클래스 간의 교류 방법에 대해 정의하는 방법을 제시합니다. 런타임시 수행하기 어려운 복잡한 제어구조를 패턴화시킨 것으로 이를 사용하면 객체들 간의 제어구조보다 객체들을 어떻게 연결시킬 것인가에 더 중점을 두게됩니다. 객체들 사이의 행위나 알고리즘 등과 관련된 패턴으로 응용 분야에 따라 행위가 다른 객체로 옮겨가거나 알고리즘이 대체되는 경우가 존재할 때 사용합니다.

행위패턴에는 역할 사슬, 커멘드, 인터프리터, 이터레이터, 미디에이터, 메멘토, 옵저버, 상태, 전략, 템플릿 메소드, 비지터가 있습니다.



댓글 없음:

댓글 쓰기

[Effective C++] 항목 30 : 인라인 함수는 미주알고주알 따져서 이해해 두자.

인라인 함수를 사용하면 컴파일러가 함수 본문에 대해 문맥별 최적화를 걸기가 용이해집니다. 인라인 함수의 아이디어는  함수 호출문을 그 함수의 본문으로 바꿔치기하자는 것  남발했다가는 코드의 크기가 커질 게 뻔하다. 인라인 함수로 부풀려진 ...