Nota: l'esempio in questa domanda è per dimostrazione. Concentrati sulla questione e non sui problemi nell'esempio (come l'accoppiamento stretto, la mancanza di Iniezione delle dipendenze ecc.).
Ho un modulo per creare un contatto con un pulsante per salvarlo. Qui ci sono View
e Presenter
(scritto in C #).
Visualizza:
class View : Form
{
Presenter presenter;
public Contact Contact
{
get { /* getting logic */ }
}
View()
{
presenter = new resenter(this);
InitializeComponent();
SetEvents();
}
void SetEvents()
{
saveButton.Click += presenter.SaveButton_Click;
}
}
Presenter:
class Presenter
{
View view;
Model model;
Presenter(View view)
{
this.view = view;
this.model = new Model();
}
public void SaveButton_Click()
{
}
}
La mia domanda è ciò che dovrebbe essere scritto in SaveButton_Click
. Dovrei chiamare direttamente ContactRepository
:
public void SaveButton_Click()
{
ContactRepository.Save(view.Contact);
}
O piuttosto crea un metodo Save
nel Model
che chiama ContactRepository
:
public void SaveButton_Click()
{
model.SaveContact(view.Contact);
}
.
.
.
class Model
{
public void SaveContact(Contact contact)
{
ContactRepository.Save(view.Contact);
}
}
Qual è il modo corretto? I primi principi di break MVP
, o il secondo è solo la creazione di metodi non necessari?