Is this roughly what you're thinking? Client is maybe a
servlet. Service is something useful in your "model" side.
The Builder idea is fine. One nice thing about factories is that they hide the mechanics of making something, so they can use Builders as necessary. The getDTO("thing") method on line 6 could use a Builder if creating the DTO is complicated.
This does bother me a little bit. If we're creating a new ThingDTO from scratch, we probably don't need to involve the DAO. The DTO factory is still fine, but we could call it right from the service. If we're retrieving an existing Thing into a DTO, say from a database, we might expect a database thingy instead of a DTOFactory.
If you called the DAO a Repository, like Peer's discussion in another
thread here, maybe those concerns go away. It could be appropriate for a Repo to handle both create and database things.