개발 상식

[면접을 위한 CS 전공지식 노트] 1-1 디자인 패턴

킹우현 2023. 11. 26. 20:24
디자인 패턴이란 ? 특정 상황에서 공통적으로 발생하는 문제에 대한 재사용 가능한 해결책

 

1. 싱글톤 패턴(Singleton Pattern)

싱글톤 패턴이란 하나의 클래스로 단 하나의 인스턴스만 만드는 디자인 패턴을 의미한다.

 

이를 통해 인스턴스를 생성하는 비용을 줄이고, 하나의 인스턴스를 다른 모듈들이 공유할 수 있다는 장점이 있다.

 

하지만, 모듈간의 결합을 강하게 만들어 및 의존성이 높아진다는 단점이 있다.

👉🏻 모듈간의 결합으로 인한 의존성 문제를 해결하기 위해 '의존성을 주입'하는 방법이 있다.

 

2. 팩토리 패턴(Factory Pattern)

팩토리 패턴이란 상속 관계에 있는 두 클래스에서, 중요한 뼈대를 상위 클래스가 결정하고 세부적인 내용을 하위 클래스가 결정하는 디자인 패턴을 의미한다.

 

이로 인해 상위 클래스와 하위 클래스가 분리되어 높은 유연성을 가지게 되고, 유지보수성이 증가한다.

 

3. 옵저버 패턴(Observer Pattern)

옵저버 패턴이란 객체의 상태 변화를 주시하고 있는 관찰자(주체자)가 객체의 상태 변화에 따라 메소드를 통해 구독자(옵저버)에게 변화를 알려주는 디자인 패턴이다.

 

옵저버 패턴은 주로 이벤트 기반 시스템에서 사용되며, MVC 패턴에도 사용된다. ex) 트위터, 유튜브

 

4. MVC 패턴

MVC 패턴이란 모델(Model, DB), 뷰(View, UI), 컨트롤러(Controller, 징검다리, 메인로직 담당)로 이루어진 디자인 패턴이다.

 

- 모델(Model) : 애플리케이션의 데이터인 DB, 변수, 상수 등을 뜻한다.
- 뷰(View) : 사용자 인터페이스(UI) 요소이다.
- 컨트롤러(Controller) : 모델과 뷰를 잇는 징검다리 역할을 하며, 메인 로직을 담당한다. 모델이나 뷰의 생명주기를 관리하고 변화를 알려주는 역할도 한다.

 

MVC 패턴은 모델, 뷰, 컨트롤러 3가지 역할로 구분하여 개발 프로세스에서 각각의 구성요소에만 집중해서 개발할 수 있도록 도와준다. 

👉🏻 이를 통해 재사용성과 확장성이 높아진다는 장점이 있지만, 애플리케이션의 규모가 커질수록 모델과 뷰의 관계가 복잡해진다는 단점이 있다.

 

대표적인 프레임워크로 스프링(Spring)이 있다.

 

5. MVP 패턴 (Controller -> Presenter)

MVP 패턴은 MVC 에서 컨트롤러가 프레젠터로 교체된 패턴이다.

 

뷰와 프레젠터는 1:1 관계이기 때문에 MVC 패턴보다 더 강한 결합을 가진다는 특징이 있다.

 

6. MVVM 패턴 (Controller -> View Model)

MVVM 패턴은 MVC 에서 컨트롤러가 뷰 모델로 교체된 패턴이다.

 

MVVM 패턴은 MVC 패턴가 다르게 양방향 데이터 바인딩을 지원한다.

 

대표적인 프레임워크로 뷰(Vue.js)가 존재한다. 마찬가지로 양방향 데이터 바인딩과, html을 토대로 컴포넌트를 구축할 수 있다는 특징이 있다.