mvc 구조 예제

예를 들어 „사용자“ 모델은 사용자를 나타내는 클래스입니다. (그것은 우리의 사용자를 모델.) 그것은 사용자의 정보와 관련된 변수를 보유하고, 사용자의 정보를 얻을 수있는 기능, 그것을 설정, 업데이트, 자신의 프로필 사진을 얻을, 자신의 상태를 업데이트, 또는 데이터베이스와의 상호 작용을 필요로하는 다른 작업을 수행, 또는 광범위한 (예: 사용자 입력에 따라 계산하는 경우) 간단한 계산기는 계산기.zip (자바 독 문서)에 포함되어 있습니다. 이 프로그램에는 아직 볼 수 없었던 두 가지 기능이 있습니다. 하나는 각 파일이 계산기라는 패키지에 있는 것으로 선언된다는 것입니다. Eclipse에서 모든 원본 파일은 src/계산기에 있고 컴파일된 모든 파일은 bin/계산기에 있습니다. 다른 기능은이 프로그램에 메뉴의 예가 있다는 것입니다. 왜 비어 있습니까? 필요한 기능을 제공하는 기본 클래스에서 상속되고 프레임워크가 다른 작업을 자동으로 수행할 수 있도록 CakePHP 이름 규칙을 따랐기 때문입니다. 예를 들어 cakePHP는 이름에 따라 이 모델이 BooksController에서 사용되고 책이라는 데이터베이스 테이블에 액세스한다는 것을 알고 있습니다. 한 사용자가 Pong을 재생할 수 있도록 하는 간단한 예제는 pong.zip(javadoc 설명서)에 포함되어 있습니다. 모델은 PongModel에 있고 뷰는 PongView 및 PongPanel에 있으며 컨트롤러는 나머지 코드입니다(기본 메서드 제외). 이 예제에는 패키지 선언 및 메뉴도 있습니다. 이 프로그램에는 팝업 메뉴(마우스 오른쪽 클릭으로 액세스할 수 있음)와 동일한 메뉴 항목에 대한 바로 가기 키(f, p 및 e)도 있습니다. 또한 창의 크기를 추적합니다.

아마도 모든 컨트롤러 코드가 단일 클래스에 배치 되었을 수 있지만 모호한 개선이 될 수 있습니다. 이 예제 응용 프로그램은 교과서의 JList 예제(그림 14.23)와 JPanel을 사용하는 마우스 그리기 예제(그림 14.34)의 조합입니다. ERb를 사용하면 해당 코드를 특수 태그로 래핑하여 HTML 파일 전체에 서버 쪽 코드를 분산할 수 있습니다. 예를 들어 다음 UML 다이어그램은 데모컨트롤러에 데모모델 특성이 있지만 그 반대의 경우도 마찬가지이므로 단방향 연결을 보여 주는 다이어그램입니다. 데모뷰의 registerController 메서드에는 데모컨트롤러 매개 변수가 있기 때문에 데모뷰에서 데모컨트롤러로 종속성이 표시됩니다. 이 규칙은 복잡하게 들릴 수 있지만 실제로는 매우 직관적입니다. 예를 들어 이전에 정의된 StoriesController 클래스를 고려하십시오. 이 컨트롤러에 대한 show 메서드를 호출하면 기본적으로 앱/보기/스토리 디렉터리에 있는 ActionView 템플릿을 표시하려고 시도합니다.

페이지가 표준 HTML 페이지(일부 ERb 코드 포함)라고 가정하면 이 템플릿의 이름은 show.html.erb입니다. 다음은 몇 가지 예제 파일이 있는 간단한 MVC 디렉터리 구조입니다. 이러한 규칙은 내 일반적인 명명 규칙을 따르며 각 개발자는 자체적으로 있을 수 있지만 일종의 표준 명명 규칙을 가지는 것이 현명합니다. 아래 예제 구조의 파일은 단지 예일 뿐이며 개발자는 파일의 구조를 지정하거나 이름을 약간 다르게 지정할 수 있습니다. 공급업체 간에 크게 다른 코드와 ActiveRecord 요약에 따라 다음과 같은 코드의 몇 가지 예는 다음과 같습니다. 연습을 위해, 당신이 좋아하는 경우에 레일 콘솔에 입력 주시기 바랍니다. 클래스 정의는 저장되지 않습니다 기억하지만 나중에 파일에서 연결을 정의하는 방법을 보여 드리겠습니다. 모든 책 관련 작업(보기, 편집, 만들기 등)을 처리하는 특정 컨트롤러가 있습니다. 이 예제에 대해 books_controller.php라고 가정해 보겠습니다. 우리는 또한 상점의 항목과 관련된 데이터 및 논리를 처리하는 book_model.php와 같은 모델을 갖게됩니다. 마지막으로 책 목록, 책을 편집할 페이지 등과 같은 일련의 뷰를 제공합니다.