I'd argue for the accessors for a few reasons. I actually don't like the few cases that I've seen that pattern in android, and would be curious to know the decision behind that. For one, you lose the benefits of encapsulation, which in case of getting `String` or `int` values, doesn't matter too much, but for something like the `List` of image urls, you lose the ability to take action before that field is accessed or modified. Also it doesn't allow for any of the literal fields to enforce against invariants. Also I think some things at least should be immutable like `id`. Also since all fields are accessible publicly, none of these members can be inherently thread-safe. 

IMO making all of these fields immutable would solve a lot of these problems if we want to be able to access them like `dish.name`, but you still lose a bit of the benefit of encapsulation and modularity. Albeit all of these problems can be avoided if we're sure we use these classes responsibly, but for the sake of software engineering guides, I would rather not expose mutable fields outside of classes.