디자인 패턴과 아키텍처 패턴의 차이
아키텍처 패턴은 윤곽을 잡는 역할, 디자인 패턴은 더 세밀한 부분에 가이드라인이 되는 좁은 개념
이 둘은 유사성을 가지지만, 범위의 제한이 존재
- 건축과 비교하면
아키텍처 패턴은 건물 윤곽에 대한 가이드라인을 제시한다.
ex> 오피스텔의 복도 넓이는 이정도, 층간 높이는 이만큼이 가장 적절하더라
디자인 패턴은 좀 더 세밀한 부분적인 해결책을 제시한다.
ex> 오피스텔 각 방들의 인테리어, 화장실의 샤워 공간은 이정도면 적당하더라
- 아키텍처 패턴 : 아키텍처(소프트웨어의 뼈대, 큰 구조로 다른 구성 요소를 관리하는 역할)를 설계할 떄 참조
- 디자인 패턴 : 모듈 간의 관계 및 인터페이스를 설계할 때 참조, 특정 유형의 문제에 대한 구체적인 해결 방식
출처 : 시나공
디자인 패턴
개요
문제에 대한 전형적인 해결 방식 또는 예제
과거 소프트웨어 개발 과정에서 발견한 설계 노하우를 패턴으로 정리
- 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 발생했을 때 참조할 수 있는 (재사용할 수 있는) 해결책
- "바퀴를 다시 발명하지 마라"
- 이미 존재하는 기술이나 제품을 굳이 다시 만들기 위해 시간과 노동력을 소모하지 말라는 의미의 관용구
- 개발 과정 중에 문제가 발생하면 새로 해결책을 구상하는 것보다 문제에 해당하는 디자인 패턴을 참고하여 적용하는 것이 더 효율적
목적
SW의 재사용성, 호환성, 유지 보수성
특징
- 특정한 구현이 아닌, 아이디어
- 항상 적용할 필요는 없지만, 문제 해결 시 참조하거나 문제를 예방하기 위해 만들어 둔 것
GoF 디자인 패턴 분류
- 생성(Creationa) 패턴
- 클래스나 객체의 생성과 참조 과정을 정의하는 패턴
- 구조(Structural) 패턴
- 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴, 객체간의 관계를 조직
- 행위(Behavioral) 패턴
- 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴, 객체의 행위를 조직/관리/연합
GoF 디자인 패턴 종류
- 생성 패턴
- 추상 팩토리 (Abstract Factory)
- 빌더 (Builder)
- 팩토리 메소드 (Factory Method)
- 프로토타입 (Prototype)
- 싱글톤 (Singleton)
- 구조 패턴
- 어댑터 (Adapter)
- 브리지 (Bridge)
- 컴포지트 (Composite)
- 데코레이터 (Decorator)
- 퍼사드 (Facade)
- 플라이웨이트 (Flyweight)
- 프록시 (Proxy)
- 행위 패턴
- 책임 연쇄 (Chain of Responsibility)
- 커맨드 (Command)
- 인터프리터 (Interpreter)
- 이터레이터 (Iterator)
- 미디에이터 (Mediator)
- 메멘토 (Memento)
- 옵서버 (Observer)
- 스테이트 (State)
- 스트래티지 (Strategy)
- 템플릿 메소드 (Template Method)
- 비지터 (Visitor)
아키텍처 패턴
개요
소프트웨어 아키텍처에서 발생하는 문제점에 대한 해결 방식 또는 예제
- 문제점들에 대한 일반화되고 재사용 가능한 해결책
- 소프트웨어 디자인 패턴과 유사하지만 더 큰 범주에 속함
목적
복잡한 구조 단순화, 효율적인 코드 작성 + 디자인패턴의 목적과 같음
좋은 아키텍처 패턴의 특징
- Distribution : 역할 분담
- Testability : 각 요소의 독립적 테스트
- Easy of Use
종류
SOLID 원칙 (객체지향 설계 원칙)
- Single Responsibilty Principle (SRP)
- Open - Close Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Property
=> 자세한 내용 포스팅 예정
작성자의 주절,,주절,,
- MVC패턴이 디자인 패턴인 줄로만 알고 있었으나 정보처리기사를 공부할 때 외웠던 생구행의 디자인 패턴 속에 없었던 것이 생각나 찾아보니 아키텍처 패턴의 챕터에서 나왔었다.
- 이러한 패턴 사용의 이유와 아키텍처 패턴과 디자인 패턴의 차이점에 대해 설명할 수 없었다.
- 역시 알고 있다고 생각했지만 머리속에서 정리되지 않았고, 이를 계기로 알고 있었던 개념에 대해 차근차근 정리해보려고 한다...