- Value: (read-only) does some math or manipulation with one input value, like a model, but for one value only
- Presenter: (read-only) takes complex data, like different models, and provides extra presentation values, even HTML
- Service: (mainly-write) Has a main method that writes data through delegation, and can expose the results as read-methods (eg: errors)
- Query: (read-only) Joins different models and performs SQL queries on them, ideally through SQL views
- Gateway: (read-write) LIB Wrap of an API (lib: favour primitives, don't depend on
app
) - Serializer: (read-only) Converts input to a string like JSON, CSV, PDF blob etc (prefer others)
- Parser: (read-only) convert data from one format to another (prefer others)
- Decorator: (read-only) extends an object with extra value otherwise written in a presenter (prefer others)
Why prefer others? In OO you should objects that represent your data, rather than actors that transform things, in general you can do this with a Value object