2010-01-28 4 views
0

예를 들어 IDE 응용 프로그램에서 C#의 경우 ClassView와 TextView의 두 가지 뷰가 있습니다.MVC - 다중 모델 하나의 데이터

클래스 뷰에서 클래스 정보를 계층 적 방식으로 표시해야합니다. 여기서 TextView와 마찬가지로 해당 클래스의 코드가 표시됩니다.

클래스 뷰는 클래스, 메서드, 속성, 필드 등을 쿼리해야하지만 텍스트 뷰는 코드에서 행을 쿼리합니다.

두 가지보기를 모두 수정할 수 있습니다. 한보기의 변경 사항은 다른보기에도 반영되어야합니다.

그래서 클래스 뷰에는 하나의 모델이 필요하고 텍스트 뷰에는 다른 모델이 필요하지만 기본 데이터는 동일합니다.

이러한 문제를 해결할 수있는 디자인 패턴이 있습니까?

미리 감사드립니다.

답변

0

와 상호 작용 컨트롤러 모델 A를 상호 작용/조회수, 다른 컨트롤러/뷰있을 것입니다. 데이터가 모두 하나의 파일에 포함되어 있다면 어플 리케이션에 여러 모델이 필요하지 않을 수도 있습니다. 방법 :

namespace MyNamespace 
    { 
    public class CodeFile 
    { 
     /// <summary> 
     /// A list of contained classes for the Class view 
     /// </summary> 
     public List<CodeClass> Classes { get; set; } 
     public CodeFile() 
     { 
      Classes = new List<CodeClass>(); 
     } 
     public string ToString() 
     { 
      // send output to Text view 
     } 
    } 

    public class CodeClass 
    { 
     public string ClassName {get; set;} 
     public List<CodeProperty> Properties {get; set;} 
     public List<CodeMethod> Methods {get;set;} 
     public CodeClass(string className) 
     { 
      ClassName = className; 
      Properties = new List<CodeProperty>(); 
      Methods = new List<CodeMethod>(); 
     } 
    } 

    public class CodeMethod 
    { 
     public string MethodName { get; set; } 
    } 

    public class CodeProperty 
    { 
     public string PropertyName 
    } 


} 
0

모델 뷰 컨트롤러 :

질문의 실수는 데이터가 실제로 모델에 매핑되는 것입니다.

두 개의 뷰 (classview 및 textview)가있을 수 있으며 둘 다 하나의 공통된 모델로 작동합니다. 컨트롤러는 다른 뷰가 모델을 변경할 때 하나의 뷰를 업데이트 할 수 있습니다.

0

MVC를 사용하여 직접 태그를 지정했습니다. 기본 데이터는 모델이며 클래스 뷰와 텍스트 뷰는 뷰/컨트롤러의 역할을합니다. 모델은 하나의 뷰에서 변경 사항이 다른 뷰에 반영되는지 확인하기 위해 뷰에 이벤트를 보냅니다.

0

동일한 기본 데이터 저장소와 상호 작용하는 여러 모델 계층 구조를 작성하지 못하도록 MVC 아키텍처에는 아무 것도 없습니다.

당신은 확실히 MVC 모델 계층이 될 수 모델 B.

+0

빠른 응답을 주셔서 감사합니다. 모델 A가 (보기 A를 통해) 변경되면 누가보기 B에게 자체를 업데이트하도록 지시합니다. 내 말은 다음과 같음을 의미합니다. View A tells Ctrl'er A는 모델 A에게 일부 데이터를 변경하도록 지시합니다. 모델 A는 공통 모델에 데이터 변경을 알립니다. 공통 모델은 등록 된 모든 관찰자 (이 경우 모델 B)에게 뷰를 업데이트하도록 지시합니다. 모델 B는 Ctrl'erB가 B를 표시하여 업데이트하도록 알립니다. – Ajay

+0

@Ajay : 아마도 귀하의 질문에 뭔가 빠졌지 만, Model은 현재 데이터베이스에있는 대개 기본 데이터를 논리적으로 표현한 것일뿐입니다. 기본 데이터가 변경된 경우 해당 데이터가 변경 될 것임을 나타내는 모델 클래스 인스턴스가 추적됩니다. 이 방법을 구현하는 방법에 대한 자세한 내용은 데이터 저장소의 특성에 따라 달라집니다. 모델 A가 모델 B에 대해 아무 것도 모르고 있는지 여부는 하나의 프로세스 또는 여러 프로세스 (언어, 플랫폼 등)에서 발생합니다. –

+0

데이터는 간단한 파일입니다. . 모든 모델은 동일한 프로세스에 있습니다. 언어 : C#, 플랫폼 : .NET. 내가 알고 싶은 것은 모델이 다른 모델에 데이터 변경을 알릴 수 있는지 여부와 같은 데이터에 대해 여러 모델이있는 시나리오입니다. MVC 패턴이이를 허용하거나 더 나은 작업을 수행하는 다른 패턴이 있습니까? 또한 MVC 패턴을 계층 적으로 지정할 수 있습니다. 하나의 모델은 다른 모델의 모델입니다. 예. 데이터 -> 모델 A -> 모델 1 -보기 1 데이터 -> 모델 A -> 모델 2->보기 2 – Ajay