소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 한다.
디자인 패턴은 다양한 변경을 다루기 위해 반복적으로 재사용할 수 있는 설계의 묶음이다. 디자인 패턴이 설계를 재사용하기 위한 것이라면 프레임워크는 설계와 코드를 함께 재사용하기 위한 것이다.
프레임워크는 애플리케이션의 아키텍처를 구현 코드의 형태로 제공한다. 프레임워크가 제공하는 아키텍처가 요구사항에 적합하다면 다양한 환경에서 테스트를 거친 견고한 구현 코드를 쉽고 빠르게 재사용할 수 있다.
디자인 패턴과 프레임워크 모두 협력을 일관성 있게 만들기 위한 방법이다.
각 패턴별 소개
STRATEGY 패턴
알고리즘의 변경을 캡슐화 하는것이 목적이고, 이를 구현하기 위해 객체 합성을 이용한다.
TEMPLATE METHOD 패턴
알고리즘을 캡슐화 하기 위해 합성이 아닌, 상속 관계를 이용한다.
DECORATOR 패턴
개인적으로, 관심이 많던 패턴이기도 하고... 따로 찾아봤던 기억이 있는 패턴이다.
객체의 행동을 동적으로 추가할 수 있게 해주는 패턴으로서 기본적으로 객체의 행동을 결합하기 위해 객체의 합성을 사용한다.
선택적인 행동의 개수와 순서에 대한 변경을 캡슐화 할 수 있다.
디자인 패턴을 적용하기 위해선 설계 아이디어를 프로그래밍 언어의 특성에 맞춰 가공해야 하고 매번 구현 코드를 재 작성해야 한다는 단점이 있다.
재사용 관점에서 설계 재사용보다 더 좋은 방법은 코드 재사용이다. 그러나 애플리케이션과 도메인의 다양성으로 인해 코드 재사용만을 강조하는 컴포넌트는 현실적이지 않다는 사실이 드러났다.
가장 이상적인 형태의 재사용 방법은 설계 재사용과 코드 재사용을 적절한 수준으로 조합하는 것이다.
추상적인 수준에서의 설계 재사용을 강조하는 디자인 패턴은 재사용을 위해 매번 유사한 코드를 작성해야 한다.
이런 문제를 피하기 위한 방법이 바로 프레임워크이다.
프레임워크
'추상 클래스나 인터페이스를 정의하고 인스턴스 사이의 상호작용을 통해 시스템 전체 혹은 일부를 구현해 놓은 재사용 가능한 설계', 또는 '애플리케이션 개발자가 현재의 요구사항에 맞게 커스터마이징 할 수 있는 애플리케이션의 골격'을 의미
[Design Pattern] Observer Pattern 옵저버 패턴에 대해 알아보자! (0) | 2023.01.07 |
---|---|
프로젝트 회고 : Let's Parking! (5) | 2022.12.27 |
[BOOK : 오브젝트 14장] 일관성 있는 협력 (0) | 2022.12.10 |
[BOOK: 오브젝트 11장] 합성과 유연한 설계 (0) | 2022.11.27 |
[BOOK: 오브젝트 10장] 상속과 코드 재사용 (0) | 2022.11.18 |