форма окон и шаблон дизайна - PullRequest
0 голосов
/ 21 марта 2011

Я знаком с mvc, mvp или mvvm patter.поэтому я искал Google для реализации хорошего шаблона дизайна для выигрышных приложений.Я нашел много статей. Некоторые ребята сказали, что mvc хорош, и мало кто сказал, что mvp идеально подходит для выигрышных приложений.Я нашел очень маленький код, который реализует MVP в приложениях Win.Я прошёл код и обнаружил, что разработчик должен написать много лишнего кода для привязки дерева или любого элемента управления.

код выглядит следующим образом

public interface IYourView
{
   void BindTree(Model model);
}

public class YourView : System.Windows.Forms, IYourView
{
   private Presenter presenter;

   public YourView()
   {
      presenter = new YourPresenter(this);
   }

   public override OnLoad()
   {
         presenter.OnLoad();
   }

   public void BindTree(Model model)
   {
       // Binding logic goes here....
   }
}

public class YourPresenter
{
   private IYourView view;

   public YourPresenter(IYourView view)
   { 
       this.view = view;
   }

   public void OnLoad()
   {
       // Get data from service.... or whatever soruce
       Model model = service.GetData(...);
       view.BindTree(model);
   }
}

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

1 Ответ

2 голосов
/ 21 марта 2011

Этот код уже использует шаблон MVP.

Он объявляет интерфейс IYourView и конкретный класс YourView, который реализует System.Windows.Form и этот новый интерфейс.По сути, это создает новую форму с дополнительным требованием, чтобы она также реализовывала метод BindTree(), определенный в IYourView.

Класс (форма) YourView имеет зависимость YourPresenter чтобы связать событие OnLoad с докладчиком, хотя я бы сделал это, когда докладчик подписывается на событие OnLoad формы.

Докладчик YourPresenter принимает в качестве зависимости иэкземпляр YourView, и он может затем использовать этот экземпляр в остальной части своей логики.

Теперь, чтобы использовать это, вы будете следовать процессу, подобному следующему:

  • Создайте новый экземпляриз YourView (который, в свою очередь, создает презентатора)
  • Реализация логики в презентаторе (т.е. создание GetModel()) для создания модели, которую вы хотите связать с деревом
  • Позвоните view.BindTree(model) в докладчике, где модель - это то, что вы только что создали на предыдущем шаге

Итак, создайте экземпляр вашего представления:

IYourView newView = new YourView();

Затем в классе докладчика:

Model model = GetModel();
newView.BindTree(model);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...