I think that you are absolutely right when you say that a view stores the state of a view in MVP: this is just a way to "separate problems" in MVP. In the "pure MVP" state, the view state is saved, not in the presenter. The facilitator can request a presentation for him using the methods provided by the presentation interface.
Preserving state in the presenter will make your presenter a hybrid between the presentation model and the presenter. Be pragmatic and do not rebuild your full application if you sometimes find that some state of presentation is in the presenter.
Just keep in mind the general motivation for using PM or MVP patterns.
In the Fowler eeaDev web article on the presentation model, he states:
A presentation model is a template that draws presentation behavior from a view. Thus, it is an alternative to the Supervisory Controller and Passive View. This is useful for a test without a user interface, support for some form of multiple viewing and separation of problems that may make it easier to develop a user interface.
Fowler continues:
Compared to the passive presentation and the Controlling controller, the presentation model allows you to write logic that is completely independent of the views used for display. You also do not need to rely on a view to maintain state. The disadvantage is that you need a synchronization mechanism between the presentation model and the presentation.
I do not agree with the statement that you quote in your question:
One of the [problems of MVP] is maintaining state of views.
This is not a problem: it is a choice. IMO Fowler does not mention this “persistence of presentation state” as a motivation to use the Presentation Model instead of MVP, whether it be a Controlling Controller or Passive View .
I'm not quite sure that Fowler with “store state" means constancy in the sense of "application lifetime". But regardless of whether it is worth choosing with a compromise: when you use the Presentation Model instead of MVP, you get
- better verifiability of view state
- independence of representation regarding storage (storage) status
- a "programmer" can create PM, and a "UI designer" can then work separately in a view
due to
- the need to synchronize the presentation with the presentation model
Note that the last “expense” may be less these days than when Fowler (2006) wrote, due to modern user interface synchronization methods such as .NET data binding.