S-MVP
Optimized version of MVP, using annotation generics to simplify code
..., and the main program logic is implemented in Presenter. Moreover, the Presenter is not directly related to the specific View, but interacts through the defined interface (we only need to pass parameters according to the interface when testing alone), so that the Presenter can be kept unchanged when changing the View. i.e. reuse! Not only that, we can also write a View for testing to simulate various operations of the user, so as to test the Presenter - without using automated testing tools.