공통점 : 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것
** React는 UI 컴포넌트를 만드는 데 필요한 기능을 제공한다. 라우팅(ex. React Router), 상태관리(ex. Redux, Recoil, Zustand), 폼 처리(ex. Formik, React Hook Form) 등의 기능을 사용하기 위해서는 추가 라이브러리를 도입해야 한다.
ex. 싱글턴 (Singleton), 팩토리 메서드 (Factory Method), 추상 팩토리 (Abstract Factory), 빌더 (Builder), 프로토타입 (Prototype)
ex. 어댑터 (Adapter), 데코레이터 (Decorator), 컴포지트 (Composite), 프록시 (Proxy), 퍼사드 (Facade), 브리지 (Bridge), 플라이웨이트 (Flyweight)
ex. 옵저버 (Observer), 스트래티지 (Strategy), 커맨드 (Command), 스테이트 (State), 템플릿 메서드 (Template Method), 이터레이터 (Iterator), 미디에이터 (Mediator), 비지터 (Visitor), 체인 오브 리스폰서빌리티 (Chain of Responsibility), 메멘토 (Memento), 인터프리터 (Interpreter)
Model: 애플리케이션이 ‘무엇'을 할지 정의
애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 의미.
사용자가 편집하려는 데이터를 모두 알고 있어야 한다.
뷰나 컨트롤러에 대해 어떤 정보도 알지 말아야 함. 변경이 일어나면 변경 통지에 대한 처리 방법을 구현.
View : 정보를 화면으로 보여주는 역할
화면에 ‘무엇'인가를 ‘보여주기 위한 역할‘. 사용자 인터페이스 요소 ex. Checkbox, textarea
M이나 C가 보여주려 하는 모든 필요한 것들을 보여줌
모델이나 컨트롤러와 같이 다른 구성요소를 몰라야 함.
Presenter : Model을 조작할 뿐만 아니라 View를 업데이트한다.
View는 사용자 이벤트를 Presenter에 전달한다.
Presenter는 이벤트를 처리하고, 필요한 로직을 실행하여 Model을 업데이트한다.
Presenter는 Model의 변화를 감지하고, 그에 따라 View를 업데이트한다.
사용자가 이름, 이메일 등을 입력합니다.
View는 사용자 입력을 Controller에 전달합니다.
Controller는 사용자 입력을 받고, 필요한 경우 입력 데이터를 검증합니다.
Controller는 Model에게 데이터 처리를 요청하거나, 비즈니스 로직을 수행합니다.
Model은 Controller의 요청에 따라 데이터를 업데이트하고, 필요한 경우 데이터베이스와 같은 데이터 저장소에 변경 사항을 반영합니다.
Model의 상태 변경이 발생하면, Model은 이를 View에 통보합니다.
View는 Model로부터 전달받은 데이터를 이용하여 화면을 업데이트합니다.
사용자가 이름, 이메일 등을 입력합니다.
View는 사용자 입력을 Presenter에 전달합니다.
Presenter는 View로부터 입력 데이터를 받아서 검증 및 비즈니스 로직을 수행합니다.
필요한 경우 Presenter는 Model에게 데이터 처리를 요청합니다.
Model은 Presenter의 요청에 따라 데이터를 업데이트하고, 필요한 경우 데이터베이스와 같은 데이터 저장소에 변경 사항을 반영합니다.
Presenter는 Model의 상태 변경을 감지하고, View를 업데이트하기 위해 필요한 데이터를 제공합니다.
View는 Presenter로부터 전달받은 데이터를 사용하여 화면을 업데이트합니다.
사용자가 이름, 이메일 등을 입력합니다.
View는 사용자 입력을 ViewModel에 전달합니다.
ViewModel은 View로부터 입력 데이터를 받아서 검증 및 필요한 비즈니스 로직을 수행합니다.
ViewModel은 필요한 경우 Model에게 데이터 처리를 요청합니다.
Model은 ViewModel의 요청에 따라 데이터를 업데이트하고, 필요한 경우 데이터베이스와 같은 데이터 저장소에 변경 사항을 반영합니다.
ViewModel은 데이터 바인딩을 통해 View에 업데이트된 데이터를 자동으로 전달합니다.
View는 ViewModel의 상태 변화를 감지하고, 자동으로 화면을 업데이트합니다.
참고 자료
https://velog.io/@bcl0206/API-vs-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%ED%92%80%EB%A6%AC%EC%A7%80-%EC%95%8A%EB%8A%94-%EB%AF%B8%EC%8A%A4%ED%84%B0%EB%A6%AC%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC
https://velog.io/@blcklamb/%EB%A9%B4%EC%A0%91%EC%9D%84-%EC%9C%84%ED%95%9C-CS-%EC%A0%84%EA%B3%B5-%EC%A7%80%EC%8B%9D-%EB%85%B8%ED%8A%B8-01-1-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4
문제