I find a bit obsfuscated the side-effects that occur within the interfactions between IWatchListService and WatchListViewPresenter:
- WatchListModule gets initialized
- WatchListPresenter gets resolved
- To satisfy the ctor, IWatchListService gets resolved by creating a WatchListService
And then WatchListService
- Hooks up the AddWatchCommand
- Creates the Model
- Acts as a mediator to update the model when the command is executed.
My definition of a service is rarely related to UI commands. Its responsability is to provide the model, not sure it is to keep it in sync as well.
IMHO, the presenter should hook the command and update the model as appropriate or delegate mediation to a helper class.