In which scenario can I use those design patterns in n-tier architecture?
I would advise against the data transfer object. It's an EJB 1.0 anti-pattern, in my opinion, given value by those who insist in layer purity.
A value object is useful. It's usually an immutable object, like Money. They should be thread-safe.