객체지향 프로그래밍(Object Oriented Programming, OOP)
특성 : 캡슐화, 추상화, 상속화, 다형화
설계 원칙(SOLID) : 단일 책임 원칙, 개방 폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존관계 역전 원칙
디자인 패턴은 크게 생성(Creational), 구조(Structural), 행위(Behavioral) 패턴으로 분류된다.
생성 패턴 : 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영형을 크게 받지 않도록 한다.
구조 패턴 : 객체를 조합해 더 큰 구조를 만든다.
행위 패턴 : 작업을 여러 개의 객체로 분리하여 객체 사이의 결합도를 최소화한다.
Model-View-Controller : 비즈니스와 UI 로직을 분리
Model
View
Controller
View
와 Model
의 의존성을 완전히 제거할 수 없다.MVP
패턴이다.Model + View + Presenter
Model
View
Presenter
View
와 Presenter
사이의 의존성이 발생한다.Presenter
의 크기가 거대해진다.Model View, View, Model
Model
View
ViewModel
MVP
는 View와 Presenter 사이의 관계가 1:1MVVM
은 View와 ViewModel 사이의 관계가 1:NMVVM
이라는 아키텍처는 대부분 그대로 유지된다.비즈니스 로직과 UI 로직을 완전히 분리하여 생각한다. -> 상태 관리(State Management)
Redux, Vuex 등의 다양한 상태 관리 라이브러리가 등장하는 계기가 되었다.
단방향 Cycle
1. View에서 Dispatch를 통해 Action을 전달
2. 전달된 Action에서는 Reducer를 통해 Store에 데이터를 보관
3. Store에 있는 데이터는 다시 View로 연결