Hi Sebastian,
Yeah, there are... kinda. If you watch episode 18, you'll see that UB uses "degenerate" type to isolate the Interactor response object, and the one the UI knows about, same thing to the request object. In my example I decided to use an interface (and to be honest, I don't even know why, I don't think I understand the purpose of a degenerate type, therefore I wouldn't be able to explain it to my team).
What happens is, controller creates the concrete presenter, and asks for a new interactor (all this is done by a IOC container in a different project, so the ui doesn't know about the concrete interactor, only the boundary), inside the interactor's execute method I create the concrete response object, and passes it to the presenter object, so it can present it.
Hmm... I gave those classes fields to show that they're only data structures, so it is just an example really, but my intent was to show that, your request lets you decide whether you want to display broken cars, and by having the plate number on the response, means you can only see the plate number of a given car.
In an
ASP.NET MVC project, everything goes through a controller, thats why I did not separate it from the presenter, because the controller is always the starting point.
This is a challenge I'm yet to face, I know I cannot pass the entity upwards, it must not cross the boundary layer, so I know I can't have it "be the request" or "be the response". I must create response and request objects from it if necessary, and this bothers me a little bit. As an example, imagine I'd be listing cars, so my response is really a list of cars, what would the presenter expect? a List<ResponseObject>? or a ResponseObject with a List<Car> inside it? I prefer the second case, and to make that work and less ugly, I create a new Car class as a nested class of the response object. So I can Achieve ResponseObject.Cars.
Another way to solve this would be to change the response object's name to "PresentableCars" so it makes sense to have a List<PresentableCar> rather than a List<ResponseObject>. Have I lost you here?