La vue n'a-t-elle aucun événement spécifique dans son interface et appelle-t-elle les méthodes simples du présentateur pour gérer les événements et ne pas avoir d'EventHandlers officiels? Par exempleWebforms MVP Passive View - gestion des événements
// ASPX
protected void OnSaveButtonClicked(object sender, EventArgs e)
{
_Presenter.OnSave();
}
Ou devrait l'avis ont gestionnaires d'événements d'événements définis dans son interface et relier les haut explicitement pour contrôler les événements sur la page
// View
public interface IView
{
...
event EventHandler Saved;
...
}
// ASPX Page implementing the view
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
SaveButton.Click += delegate { Saved(this, e); };
}
// Presenter
internal Presenter(IView view,IRepository repository)
{
_view = view;
_repository = repository;
view.Saved += Save;
}
La deuxième semble que beaucoup de code de plomberie pour ajouter partout.
Mon intention est de comprendre les avantages de chaque style et pas seulement une réponse générale à utiliser. Mes principaux objectifs sont la clarté et la testabilité de haute valeur. Dans l'ensemble, la testabilité est importante, mais je ne sacrifierais pas la simplicité et la clarté de la conception pour pouvoir ajouter un autre type de test qui n'amène pas trop de gain par rapport aux cas de test déjà possibles avec une conception plus simple. Si un choix de conception fait plus de testabilité, veuillez inclure un exemple (le pseudo code est correct) du type de test qu'il peut maintenant offrir afin que je puisse prendre ma décision si j'apprécie assez ce type de test supplémentaire. Merci!
Mise à jour: Ma question nécessite-t-elle d'autres précisions?