Я бы сказал, что передача ссылки - безусловно, самое чистое и легко обслуживаемое решение. На самом деле, я не думаю, что смогу придумать ситуацию, в которой было бы предпочтительнее вручную поддерживать список ссылок и передавать идентификаторы вокруг ... Похоже на дополнительную работу и дополнительную зависимость в ваших клиентских классах.
Но, возможно, я не совсем понял вопрос.
- EDIT -
Просто хотел добавить, что использование идентификаторов определенно медленнее, поскольку требует дополнительного поиска
- EDIT -
Должен был добавить, что я всегда использую интерфейсы, чтобы ограничить доступ к членам и учесть полиморфизм. Для меня это идет без слов.