본문 바로가기
SW 공부/Design Patterns

[디자인패턴] Design Pattern의 종류와 활용하기

by 꼬냉상 2022. 8. 29.

Design Pattern 은 언제 사용하는가?

-  Design patterns help to ensure that a system can change in specific ways → easier to change

- 디자인 패턴은 시스템이 특정 방식으로 변경될 수 있도록 보장합니다 → 변경하기 더 쉽습니다.

- 앞으로 일어날 변화에 대한 대비책으로도 Pattern을 적용할 수 있고

- 문제를 해결하기 위해서 Patern을 적용할 수도 있습니다. 

GoF Patterns 분류

Design Pattern 적용하는 상황과 패턴의 종류

- Creating an Object by Specifying a Class Explicitly  (클래스를 명시적으로 지정하여 개체 만들기)
    → Factory Method Pattern & Abstract Factory Pattern (팩토리 메서드 패턴 & 추상 팩토리 패턴)

    → Builder pattern (빌더 패턴)

  

- Dependence on Hardware and Software Platform (HW & SW 플랫폼에 대한 의존성)

    → Bridge pattern (브릿지 패턴)

    → Abstract Factory Pattern (추상 팩토리 패턴)

 

- Algorithmic Dependencies (알고리즘 종속성)   

    → Builder pattern (빌더 패턴)

    → Iterator pattern (반복자 패턴)

    → Strategy Pattern(전략패턴)

    → Template method pattern (템플릿 메소드 패턴)

 

- Extending Functionality by Subclassing (하위분류를 통한 기능 확장)

    → Bridge pattern (브릿지 패턴)

    → Composite Pattern (컴포지트 패턴)

    → Decorator pattern (데코레이터 패턴)

    → Strategy Pattern(전략패턴)

 

- Inability to Alter Classes Conveniently (Class를 쉽게 수정할 수 없을 때)

    → Adapter pattern (어댑터 패턴)

    → Decorator pattern (데코레이터 패턴)

 

Quiz) 다음 주장에 대해 (a)찬성 혹은 반대하는지 말하고, (b)그 이유에 대해 간략히 설명하시요.

[주장] 소프트웨어 모듈 설계시 혹은 모듈간 통합(integration)시에 개발자가 알고 있는 모든 설계패턴을 적용하는 것이 좋다. 왜냐하면 설계패턴의 적용은 모듈들을 변경이 용이하고 유지보수하기에 편리하도록 만들기 때문이다.

(a) 반대

(b) 설계패턴은 대부분 좋은 Architecture를 보장하지만 모든 project에 100% 맞지는 않습니다. 무분별한 디자인 패턴 적용보다는 SW 성격을 반영한 패턴을 적용해야 합니다. 

그리고 설계패턴을 적용하면 코드에 대한 개발 대화와 이해가 좋아지지만 그만큼 아래와 같은 비용이 필요해집니다.

- 패턴 구조를 확립하고 위배되지 않기 위해 구현단에서 많은 노력이 필요해집니다.

- 패턴을 모르는 개발자의 신규 유입의 경우 이해도가 급격히 하락하기 때문에, 유지보수 인원의 능력을 감안해야 합니다.

유지보수가 적고 구현 일정이 상당히 적은 프로젝트의 경우에는 오히려 불필요한 인력과 시간을 소모하게 됩니다.

 

본 글은 개인의 S/W 구조설계 역량 강화를 위한 학습 목적으로 정리된 내용입니다.
일부 타/개인 단체에 저작권이 있는 자료를 포함하고 있으므로, 절대 영리 목적으로 사용하실 수 없습니다.
반응형

댓글