MVC - несколько данных модели One - PullRequest
0 голосов
/ 29 января 2010

Например, в приложении IDE, скажем для C #, есть 2 представления ClassView и TextView.

В ClassView нам нужно отображать информацию о классе в иерархическом порядке, где, как и в TextView, показан код для этого класса.

ClassView должен запрашивать классы, методы, свойства, поля и т. Д., А текстовое представление запрашивает строки в коде.

Оба вида доступны для редактирования. Изменения в одном представлении должны отражаться и в другом представлении.

Таким образом, для представления классов требуется одна модель, а для представления текста - другая, но базовые данные такие же.

Существует ли шаблон проектирования для решения такой проблемы?

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 02 февраля 2010

Конечно модель MVC может быть иерархической. Если все ваши данные содержатся в одном файле, возможно, вам не нужно несколько моделей для вашего приложения? Как насчет:

    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 голосов
/ 29 января 2010

Вы сами пометили его с помощью MVC ... Основными данными являются модель, представления классов и представления текста действуют как представления / контроллеры. Модель отправляет события в свои представления, чтобы убедиться, что изменения в одном представлении отражаются в другом.

0 голосов
/ 29 января 2010

В архитектуре MVC нет ничего, что могло бы помешать написанию нескольких иерархий моделей, которые взаимодействуют с одним и тем же базовым хранилищем данных.

Вы бы просто имели Контроллеры / Представления, которые взаимодействуют с Моделью A, и различные Контроллеры / Представления, которые взаимодействуют с Моделью B.

0 голосов
/ 29 января 2010

Модель просмотра контроллера:)

Ошибка в вашем вопросе заключается в том, что ваши данные фактически отображаются в вашей модели.

Вы можете иметь 2 вида (вид на класс и текст), и оба они работают с одной общей моделью. Контроллер может обновлять одно представление, когда другое меняет модель.

...