Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Olive Study Room

[Design Pattern] 디자인패턴의 정의, GoF, MVC 본문

Coding

[Design Pattern] 디자인패턴의 정의, GoF, MVC

Olive Dev 2022. 1. 8. 01:00
더보기

카카오톡 pc버전 업데이트를 하고 디자인 패턴을 공부하려고 켰는데 발표자가 카카오톡 오픈채팅 개발자셨다.. 신기해라.. 예전 발표긴 하지만 워밍업으로..!

디자인 패턴이란?

  • 소프트웨어 개발 시 공통적으로 발생하는 문제에 대한 해결방법 -> 문제가 발생하기 전 해결할 수 있는 것!
  • 커뮤니케이션 도구
  • 객체를 막 만들면 사용이 모호해짐. 

GoF 디자인 패턴

  • 1995년 GoF(Gang of Four)라고 불리는 Erich Gamma, Richard Helm, Ralph Johnson, John Vissides가 처음으로 디자인 패턴을 고안한 것으로, 소프트웨어 공학에서 가장 많이 사용되는 디자인 패턴이다. 
  • 참고로 GoF의 서적의 제목이 'Design Patterns: Elements of Reusable Object-Oriented Software('재이용이 가능한 객체지향 소프트웨어의 요소')'
  • 목적에 따라 생성 패턴 5개, 구조패턴 7개, 행위패턴 11개, 총 23개의 패턴으로 이루어져있다. 
  • 또는 범위에 따라서도 분류할 수 있다. 패턴을 클래스에 적용하는지, 객체에 적용하는지 구분한다. 클래스의 패턴은 클래스와 서브 클래스간의 관련성을 다루고 주로 상속과 관련된다. 

 

분류

  • 생성 패턴
  • 구조 패턴
  • 행위 패턴

개념도

패턴 이름 문제 결과
해법

 

종류

  • 팩토리 메서드 패턴
    • 생성 패턴 중 하나
    • 인스턴스를 생성하는 공장을 템플릿 메서드 패턴으로 구성
      • 템플릿 메서드 패턴 : 상위 클래스에서 공통되는 부분을 구현하고, 각각 상세 부분은 하위 클래스에서 구현. 코드의 중복을 줄이고 리팩토링에 유리한 패턴.
    • 서브 클래스가 어떤 클래스를 만들지 결정하게 함으로써 객체 생성을 캡슐화(즉 슈퍼클래스의 메소드에서는 어떤 객체가 만들어지는지 모르고, 서브 클래스의 메소드가 결정하게 되는 것! )
  • 추상 팩토리 패턴
    • 생성 패턴 중 하나
    • 많은 수의 연관된 서브 클래스를 특정 그룹으로 묶어 한 번에 교체할 수 있도록 만든 디자인 패턴
  • 빌더 패턴
    • 생성 패턴 중 하나
    • 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴
  • 어댑터 패턴
    • 구조 패턴 중 하나
    • 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴
    • 호환성 문제로 같이 사용할 수 없는 클래스 들을 연결해서 사용
  • 컴포지트 패턴
    • 구조 패턴 중 하나
    • 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴
    • 디렉토리(복합 객체), 파일(단일 객체)을 하나의 모델로 사용. 단일 객체와 복합 객체를 모두 동일하게 다룰 수 있게 하는 패턴

MVC

Model + View + Controller
객체들이 해야할 일, 역할, 책임을 나눠놓은 것
  • Model : 데이터 관리
    • 프로그램 저장, 불러오는 데이터, 입출력 데이터를 관리
  • View : 사용자에게 보여지는 역할을 하는 객체들
    • xcode에서 view Controller하위에 있는 View. UIView를 상속받는 것들
    • View Controller에서 self.view를 하면 이를 뜻함
  • Controller : Model과 View 사이의 중간다리
    • xcode에서 view Controller. 코드를 작성하는 공간
    • 눈에 보이지 않음

사용하는 이유

view와 model의 간섭을 없애서 각각의 업데이트를 편하게 함 

 


MVVM

Model + View + ViewModel
controller의 코드를 줄이기 위해 View와 ViewModel로 나눈 것.
  • Model : 데이터 관리
  • View : 사용자에게 보여지는 부분과 생명주기 관리
    • ViewModel이 받아온 데이터를 뿌려준다
  • ViewModel : Model로부터 가져온 데이터를 View에 맞게 가공/처리
    • 서버에서 가져올 경우 ViewModel에서 받아온다

사용하는 이유

  • view와 비즈니스 로직을 분리
  • 데이터처리와 분리
  • MVC보다 controller의 코드가 가볍다
  • 생명주기를 관리하기 용이하다.

 

 

MVC는 controller에서 데이터를 받아와 뿌려주는 부분이 합쳐져 있지만 MVVM은 데이터를 받아오는 부분과 뿌려주는 부분이 분리되어있다. 

 

더보기

출처

디자인 패턴 적용기(let us: Go! 2017 가을 세션 엔비냥님 발표) https://www.youtube.com/watch?v=MXSKM6aQ7Wo   

블로그 https://4z7l.github.io/2020/12/25/design_pattern_GoF.html

야곰님 컴공 기초 https://www.youtube.com/watch?v=1_jxgilYBhU 

Comments