가) 디자인 패턴 개념
소프트웨어 설계의 특정한 맥락에서(in a context)
반복해서 해결해야 할 문제(recurring problem)에 대해서
일반적이고 재사용이 가능한 해결 방법
디자인패턴 분류
[두음] 생구행 클객
목적에 따라 '생성 패턴', '구조 패턴', '행위 패턴'으로 나눌 수 있다.
① 생성 패턴: 객체의 생성과정에 관여하는 패턴
② 구조 패턴: 클래스나 객체의 합성에 관한 패턴
③ 행위 패턴: 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의하는 패턴
범위에 따라 패턴을 주로 클래스에 적용하는지 아니면 객체에 적용하는 지를 구분할 수 있다.
④ 클래스 패턴: 클래스와 서브 클래스 간의 관련성을 다루는 패턴.
관련성은 주로 상속이며, 컴파일 타임에 정적으로 결정한다.
⑤ 객체 패턴: 객체 관련성을 다루는 패턴으로서 런타임에 변경할 수 있으며 동적인 성격을 갖는다.
나) 대표적인 디자인 패턴
"팩토리 메소드 패턴과 인터프리터는 기출문제입니다."
① 객체 생성 패턴
- Factory Method Pattern
- 정의: 객체를 생성하되, 직접 객체 생성자를 호출해서 객체를 생성하는 것이 아니라 대행 상수를 통해 간접적으로 객체를 생성하는 방식
- 장점: 생성되는 객체에 무관하게 동일한 형태로 프로그래밍이 가능하다. 따라서 유연하고 확장성이 있다.
- 단점: 생성할 객체의 종류가 달라질 때마다 새로운 하위 클래스를 정의해야 한다는 점
- 사용 예제: OS에서 해당 프로그램의 더블클릭 시, OS에 의해 해당 프로그램이 구동되는 과정
③ 행위 패턴
- Interpreter 패턴
- 정의: 비교적 간단한 문법에 대해 문법 자체를 클래스로 정의해서 문법 검사와 함께 필요한 기능도 별도의 자료구조 없이 효율적으로 수행할 수 있게 만들어주는 클래스 구조
- 장점: 문법의 변경이나 확장이 용이, 문법 구현의 용이
꼭 탑싯(TOPCIT) 에센스 정독해 보시길 권해 드립니다.
기출문제
(관리 129-2-6)
객체지향의 기법 중에는 리팩토링(Refactoring)과 디자인패턴(Design Pattern)이 있다.
두 기법을 각각 정의하고 공통점과 차이점에 대하여 설명하시오.
(응용 117-2-1)
디자인패턴 중 팩토리 메소드 패턴(Factory Method Pattern)을 사용하는 이유를 설명하고, 아래의 클래스다이어그램을 이용하여 팩토리 메소드 패턴이 적용된 자바코드(JAVA Code)를 생성하시오.
(관리 104-3-1)
객체지향 소프트웨어 설계에 많은 도움을 주는 GoF의 디자인 패턴(Design Pattern) 영역을 목적과 범위에 따라 분류하고, 분류별 특성을 설명하시오.
또한, 객체지향시스템에서 개발된 기능의 재사용을 위해 사용되는 대표적 기법인 화이트박스 재사용(White-box Reuse), 블랙박스 재사용(Black-box Reuse) 및 위임(Delegation)이 패턴과 어떤 관계가 있는지 설명하시오.
(관리 87-3-1)
디자인 패턴에 대해 다음 물음에 답하시오.
(1) GoF(Gang of Four)가 제시한 나머지 디자인 패턴의 개념과 종류를 설명하시오.
(2) 인터프리터(Interpreter)라 불리는 디자인 패턴을 설명하시오.
(관리 81-1-2)
디자인 패턴과 아키텍처 스타일의 차이를 설명하시오.
참고 자료
탑싯 에센스 - 소프트웨어 개발
'(Pilot) 탑기공 > 소프트웨어 개발' 카테고리의 다른 글
[탑기공] 리팩토링(Refactoring), 코드스멜(Code Smell) (0) | 2023.03.05 |
---|---|
[탑기공] 객체 지향 설계와 원리 (0) | 2023.01.12 |
[탑기공] 객체 지향 분석과 모델링 개념 (0) | 2023.01.11 |
[탑기공] 객체 지향 설계 5원칙 - SOLID (0) | 2023.01.10 |
[탑기공] 소프트웨어 아키텍처 설계 표현 방법 (0) | 2023.01.06 |
댓글