언뜻보기에는 문제가 없습니다. 이제 대안을 살펴 보겠습니다 :
뷰에 원시 모델을 전달 입력 표면에 일반 모델 인터페이스
을 암시,이 괜찮 것처럼 보일 수 있습니다. 그러나 모델이 일관성이없는 경우 (예 : $model->getPerson($id)
) 컨트롤러 모델과보기를 효과적으로 연결하는 것입니다.
모델에서 모델을 실제로 받아 들일 수 없으므로 컨트롤러의 원시 모델을 주입하는 것이 약간의 자유주의 일 수 있으며 길 아래의 불일치 또는 이상한 오류가 발생할 수 있습니다.
형 통과 할 수있는 단지 정확한 모델에서 원하는 모델 클래스
이 종래 용액으로부터 liberalness 문제 해결을 암시 뷰로 원료 전달 모델. 그러나 이제는 뷰를 해당 모델과 더 결합했습니다. 그래서 좋지 않습니다.
뷰 내부에서 모델 인스턴스화.
이것은 또한 이상적인 솔루션이 아닙니다. 이제 테스트를 위해 모델을 조롱하거나 모델에 뷰를 완전히 결합 할 수 없기 때문입니다. 명확한 SOLID 위반.
그래서 모델의 공장에 기본적으로 분사됩니다. 뷰를 통해 필요한 모델을 결정할 수 있습니다 (따라서 공장에서 요청합니다). 모델을 조롱 할 수 있습니다 (다른 공장과 교환). 또한 공장에서 반환하는 것을 조정하여 임의의 모델을 전달할 수도 있습니다.
그래서 종속성이 느슨하게 결합되어 있고, 공장에 종속되어 있습니다 (더 의존적입니다).
그건 내 첫 번째 생각입니다. 더 깔끔한 해결책이 있는지 생각해 볼 필요가 있습니다.하지만 거기에 대해 생각해보십시오.
이것은 프레임 워크에 따라 다를 수 있습니다. – Michelle
추상화 수준에 따라 VS. 성능은 맵을보기 위해 모델을 기반으로 작성 될 때보기에서 데이터를 설정할 수있는 Dependency Injection 프레임 워크를 사용하여 조사 할 수 있습니다. (참조 : http://en.wikipedia.org/wiki/Dependency_injection) 또한 MVC는 실제로 어떤 MVC를 사용하고 있습니까? –
@ResistDesign MVC 프레임 워크에 관해서 공부하고 있었는데, 코드가별로 보이지 않아서 어떻게 생겼는지 궁금해했습니다. – Tek