소프트웨어가 돌아가는 방식에 대한 하나의 디자인 패턴(Model-View-Controller)
👉 특징 : 기능을 각각 나누면서 유지보수가 편해지는 코드 구성 방식. 정돈된 코드, 가독성 좋다.
👉 여러 프레임워크에는 MVC 컨셉을 사용하고 있다.
ex) Ruby on Rails(Ruby), express(JS), laravel(PHP), Django(pathon), Backbone(JS), Angular(JS), Flask(pathon), Codeigniter(PHP)
Model : 데이터와 관련된 부분
View : 사용자한테 보여지는 부분
Controller: Model과 View를 이어주는 부분
Model은 Controller와 View에 의존하지 않아야 한다. (Model 내부에 Controller와 View에 관련된 코드가 있으면 안된다.)
View가 Model로부터 데이터를 받을 때 반드시 Controller에서 받아야 한다.
View가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주어야 하는 데이터에 대해서만 받아야 한다.(view: 사용자한테 보이는 UI와 모델로부터 받은 데이터가 합쳐져서 만들어진 화면) 공통적으로 보여지는 부분은 View 자체에서 가지고 있어야하는 부분이다.
Model
데이터를 자기가 가지고있거나 데이터베이스와 상호작용을 함.
모델이 뷰랑 직접적으로 이야기하는 경우는 없다. 컨트롤러와 이야기를 함
view
유저가 보는 화면을 보여주게 하는 역할.
컨트롤러와만 이야기를 한다. (모델이나 데이터베이스랑은 이야기 안함. 모델이나 데이터베이스와 이야기하려면 컨트롤러를 통해 이야기해야함)
참고자료
-https://www.youtube.com/watch?v=ogaXW6KPc8I
-코드스테이츠
-Traversy Media(youtube)
-생활코딩
-Atom's Network