In the MVC pattern, should model and view be very concrete and tailored to the represented component? Or should they be as generic as possible so that they can easily be reused?
Specific case
My data is a list of recorded frames. Each frame can consist of multiple data blobs, for example, an image and some meta data:
Approach (1): I could use a generic
TableModel
to represent the recorded data and a genericTableView
to display it: Each column represents a frame and each row represents one kind of data. For example, one row is the image, one row is an image description entered by the user, etc.Approach (2): I could create a specific
RecorderModel
, which maybe reuses the genericTableModel
, and a specificRecorderView
, which maybe reuses the genericTableView
.
The latter seems to be preferable, because model and view can easily be udpated if specific changes are requested. However, it looks like I would end up with lots of empty classes like RecorderModel
/ RecorderView
that just wrap the generic TableModel
/ TableView
.
Are there pitfalls or important advantages/disadvantages I should be aware of? Is there a general consens like always use generic models, always use concrete views or something similar? Does it depend on the used MVC framework?