Может ли это быть консольное приложение C # Model View Controler и если нет, то почему? - PullRequest
0 голосов
/ 13 января 2010

Просто пытаюсь понять MVC, делая ... и все еще не уверен, что понял это правильно ..

    using System;
    using System.Text;

    namespace MVPConsoleApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                View objView = new View(); 
                Controller objController = new Controller(objView);
                objController.BuildUi();
                objView.WaitAndRead();

            }


        } //eof Program


        class View
        {

            private string _Prop1Gui  ;
            public string Prop1Gui 
            {
                get { return _Prop1Gui; }
                set { _Prop1Gui = value; } 
            }

            private string _Prop2Gui;
            public string Prop2Gui
            {
                get { return _Prop2Gui; }
                set { _Prop2Gui = value; }
            }

            public void WaitAndRead()
            {

                string bothProps = Console.ReadLine();
                string [] bothStrings = bothProps.Split(new char [] { ' ' } );
                this.Prop1Gui= bothStrings[0];
                this.Prop2Gui = bothStrings[1]  ; 

                Controller objController = new Controller(this);
                objController.StoreData();
                objController.BuildUiAftgerInput();
                this.WaitAndRead();
            }

            public void ShowMsg ( Model objModel) 
            {
                Console.WriteLine("objModel.ModelProp1  " + objModel.ModelProp1 +  
                    " objModel.ModelProp2 " + objModel.ModelProp2);
                Console.WriteLine("Write the new props separated by space !"); 
            }

        } //eof class 

        class Controller
        {
            View View { get; set; }
            Model Model { get; set;  } 


            public Controller(View objView)
            {
                this.View = objView;
                this.LoadData();
             }

            public void BuildUi()
            {
                this.View.ShowMsg(this.Model);
            }

            public void LoadData()
            {
                //get the data from db 
                Model objModel = new Model();
                objModel.ModelProp1 = "ModelProp1";
                objModel.ModelProp2 = "ModelProp2";
                this.Model = objModel;                 
            } //eof LoadData() 

            public void StoreData()
            {
                Model objModel = new Model();
                objModel.ModelProp1 = this.View.Prop1Gui;
                objModel.ModelProp2 = this.View.Prop2Gui;
                this.Model = objModel; 
            }

            public void BuildUiAftgerInput()
            {
                this.View.ShowMsg( this.Model);
            }

        } //eof class 

        class Model
        {
            public string ModelProp1 { get; set; }
            public string ModelProp2 { get; set; } 
        } //eof class 
    } //eof namespace 

1 Ответ

2 голосов
/ 13 января 2010

Короче, шаблон MVC должен следовать:

  • view получает пользовательский ввод и передает его на контроллер
  • контроллер обновляет модель в ответ на ввод пользователя (также может напрямую изменять вид)
  • модель уведомляет о смене
  • Просмотр обновлений на основе изменений в модели.

Другими словами, ваш Вид должен наблюдать вашу Модель. В настоящий момент ваш Просмотр не знает, когда Модель изменится, следовательно, он не может обновляться соответствующим образом.

Вам следует взглянуть на введение чего-то вроде Наблюдателя за паттерном .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...