на самом деле все 3 жизнеспособны. просто в 3 ты, если я правильно понял, закрываешь передачу данных о вьюхах интерфейсом. И это типо как бы более правильно. Но по факту возможно это просто лишняя сложность
Т.е я о том, что если у тебя холдер уровня всего приложения и часто переиспользуется, то смысл в интерфейсе есть. Если же этот холдер используется в одном месте, то зачем усложнять код?
если при использовании биндинга это надо сделать всего с одной пропертью (а то и вообще заюзать делегат автоматизирующий этот процесс), то вот с такой горой ссылок можно легко забыть