디자인 패턴

jii0_0·2022년 11월 2일
0

Computer Sciecne

목록 보기
1/3
post-thumbnail

디자인 패턴과 아키텍처 패턴의 차이

아키텍처 패턴은 윤곽을 잡는 역할, 디자인 패턴은 더 세밀한 부분에 가이드라인이 되는 좁은 개념
이 둘은 유사성을 가지지만, 범위의 제한이 존재

  • 건축과 비교하면
    아키텍처 패턴은 건물 윤곽에 대한 가이드라인을 제시한다.
    ex> 오피스텔의 복도 넓이는 이정도, 층간 높이는 이만큼이 가장 적절하더라
    디자인 패턴은 좀 더 세밀한 부분적인 해결책을 제시한다.
    ex> 오피스텔 각 방들의 인테리어, 화장실의 샤워 공간은 이정도면 적당하더라
    • 아키텍처 패턴 : 아키텍처(소프트웨어의 뼈대, 큰 구조로 다른 구성 요소를 관리하는 역할)를 설계할 떄 참조
    • 디자인 패턴 : 모듈 간의 관계 및 인터페이스를 설계할 때 참조, 특정 유형의 문제에 대한 구체적인 해결 방식

출처 : 시나공

디자인 패턴

개요

문제에 대한 전형적인 해결 방식 또는 예제
과거 소프트웨어 개발 과정에서 발견한 설계 노하우를 패턴으로 정리

  • 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 발생했을 때 참조할 수 있는 (재사용할 수 있는) 해결책
  • "바퀴를 다시 발명하지 마라"
    • 이미 존재하는 기술이나 제품을 굳이 다시 만들기 위해 시간과 노동력을 소모하지 말라는 의미의 관용구
    • 개발 과정 중에 문제가 발생하면 새로 해결책을 구상하는 것보다 문제에 해당하는 디자인 패턴을 참고하여 적용하는 것이 더 효율적

목적

SW의 재사용성, 호환성, 유지 보수성

특징

  • 특정한 구현이 아닌, 아이디어
  • 항상 적용할 필요는 없지만, 문제 해결 시 참조하거나 문제를 예방하기 위해 만들어 둔 것

GoF 디자인 패턴 분류

  1. 생성(Creationa) 패턴
    • 클래스나 객체의 생성과 참조 과정을 정의하는 패턴
  2. 구조(Structural) 패턴
    • 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴, 객체간의 관계를 조직
  3. 행위(Behavioral) 패턴
    • 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴, 객체의 행위를 조직/관리/연합

GoF 디자인 패턴 종류

  1. 생성 패턴
    • 추상 팩토리 (Abstract Factory)
    • 빌더 (Builder)
    • 팩토리 메소드 (Factory Method)
    • 프로토타입 (Prototype)
    • 싱글톤 (Singleton)
  2. 구조 패턴
    • 어댑터 (Adapter)
    • 브리지 (Bridge)
    • 컴포지트 (Composite)
    • 데코레이터 (Decorator)
    • 퍼사드 (Facade)
    • 플라이웨이트 (Flyweight)
    • 프록시 (Proxy)
  3. 행위 패턴
    • 책임 연쇄 (Chain of Responsibility)
    • 커맨드 (Command)
    • 인터프리터 (Interpreter)
    • 이터레이터 (Iterator)
    • 미디에이터 (Mediator)
    • 메멘토 (Memento)
    • 옵서버 (Observer)
    • 스테이트 (State)
    • 스트래티지 (Strategy)
    • 템플릿 메소드 (Template Method)
    • 비지터 (Visitor)

아키텍처 패턴

개요

소프트웨어 아키텍처에서 발생하는 문제점에 대한 해결 방식 또는 예제

  • 문제점들에 대한 일반화되고 재사용 가능한 해결책
  • 소프트웨어 디자인 패턴과 유사하지만 더 큰 범주에 속함

목적

복잡한 구조 단순화, 효율적인 코드 작성 + 디자인패턴의 목적과 같음

좋은 아키텍처 패턴의 특징

  • Distribution : 역할 분담
  • Testability : 각 요소의 독립적 테스트
  • Easy of Use

종류

SOLID 원칙 (객체지향 설계 원칙)

  1. Single Responsibilty Principle (SRP)
  2. Open - Close Principle
  3. Liskov Substitution Principle
  4. Interface Segregation Principle
  5. Dependency Inversion Property

=> 자세한 내용 포스팅 예정

작성자의 주절,,주절,,

  • MVC패턴이 디자인 패턴인 줄로만 알고 있었으나 정보처리기사를 공부할 때 외웠던 생구행의 디자인 패턴 속에 없었던 것이 생각나 찾아보니 아키텍처 패턴의 챕터에서 나왔었다.
  • 이러한 패턴 사용의 이유와 아키텍처 패턴과 디자인 패턴의 차이점에 대해 설명할 수 없었다.
  • 역시 알고 있다고 생각했지만 머리속에서 정리되지 않았고, 이를 계기로 알고 있었던 개념에 대해 차근차근 정리해보려고 한다...
profile
느려도 꾸준히

0개의 댓글