
MVC에서 모델은 어떻게 구성되어야 합니까?
MVC에서 모델은 애플리케이션의 비즈니스 로직과 데이터를 나타냅니다. 도메인별 논리와 규칙을 캡슐화하여 애플리케이션이 UI나 컨트롤러에 의존하지 않고 작업을 수행하고 결정을 내릴 수 있도록 합니다.
모델 개념:
관심의 분리:
- 모델 레이어는 UI 레이어(뷰 및 컨트롤러)와 분리되어 있습니다. .
- 모델과의 통신은 서비스를 통해서만 이루어지므로 문제를 명확하게 분리하고 도메인 로직이 UI 또는 컨트롤러로 유출되는 것을 방지합니다. 코드.
- 이러한 분리는 단일 책임 원칙(SRP), 유연성 및 더 쉬운 테스트 가능성을 촉진합니다.
모델 액세스:
- 뷰와 컨트롤러에서는 Symfony의 DI 컨테이너와 같은 프레임워크를 사용하여 종속성 주입을 통해 모델 서비스에 액세스할 수 있습니다. Auryn.
- 서비스는 생성자에 주입되거나 팩토리를 통해 액세스될 수 있습니다.
- 이 접근 방식을 사용하면 필요한 모든 서비스를 이러한 구성 요소에 사용할 수 있습니다.
모델 상태 수정:
- 컨트롤러는 사용자 입력을 처리하고 모델을 수정하는 일을 담당합니다. 상태.
- 서비스 메소드를 호출하며, 이는 도메인 객체 및 데이터 매퍼와 상호작용하여 필요한 논리적 작업을 수행합니다.
데이터 지속성:
- 도메인 개체는 비즈니스 엔터티를 나타내지만 저장소를 인식하지 못합니다.
- 데이터 매퍼는 데이터 지속성과 외부 검색을 처리합니다. 스토리지.
- 이러한 분리를 통해 비즈니스 로직은 사용된 특정 스토리지 기술과 독립적으로 유지됩니다.
분리의 이점:
- 각 계층에 명확한 책임을 할당하여 SRP를 시행합니다.
- 비즈니스를 격리하여 코드 가독성과 테스트 가능성을 향상합니다. logic.
- 다른 구성 요소에 영향을 주지 않고 비즈니스 로직이나 데이터 저장소를 수정할 수 있는 유연성을 제공합니다.
- 모델 서비스에 액세스하기 위한 일관된 인터페이스를 제공하여 외부 API 개발을 단순화합니다.
추가 설명:
- 데이터베이스 테이블이 항상 도메인 개체 및 데이터에 직접 매핑되는 것은 아닙니다. 매퍼.
- 뷰는 템플릿이 아니지만 표현 로직과 템플릿 선택을 처리합니다.
- 각 페이지 또는 화면에 대한 뷰와 컨트롤러 간에는 1:1 관계가 있어야 합니다.