Предположим, у меня есть класс ChatDataProvider, который общается с сервером и содержит список объектов типа Чат (содержащий объекты типа Post и т. Д.). Если я хочу, чтобы трансферт это чатов в другой класс (для того, чтобы показать их), у меня есть несколько возможностей:Использовать одинаковые данные во всем приложении или скопировать его?
- Отправить ссылку на объект List
- «Shallow» копировать данные: Создать новый список, который содержит ссылки на исходные объекты
- Deep копировать данные
Я догадываюсь 1. & 2. будет рассматриваться как плохой дизайн, так как данные не инкапсулируются. Но он также имеет преимущество:
непротиворечивости данных (если, например, упорядочение записей изменений, я либо должен распространяться это изменения в глубокой скопирована версию и применить тот же порядок там, или я бы нужно получить новую глубокую копию этого списка)
уменьшено использование памяти
Keepting данные, соответствующие всему приложению создает большие накладные расходы реализации, которые склонны к ошибкам. И поскольку это приложение, закрытое приложение, не произойдет никаких «несанкционированных» изменений в данных, которые не должны распространяться (автоматически).
Итак, какой из них вы бы выбрали и почему? Имеются ли оба варианта?
Возможно, есть ответы на этот вопрос, но я действительно не знаю, что искать. Поэтому, если кто-то знает некоторые ссылки/ресурсы, все в порядке.