У меня есть два проекта, скажем, приложение и данные. У данных есть некоторые методы, которые используются в проекте App, так что проект приложения не должен беспокоиться о каких-либо подключениях к данным/подключения к базе данных и т. Д. Я думаю, что приятные вещи об этом настройке таковы: 1. Данные не имеют зависимости на App и 2. Если бы база данных была изменена, скажем, от MS SQL до Oracle, вам не придется вообще менять проект приложения - просто создайте новый проект Data.Где я должен определить свои интерфейсы для получения хорошей архитектуры?
Похоже, что для всех методов, используемых проектом App для доступа к данным, должен быть определен интерфейс. Таким образом, кто-то может разработать проект приложения, не заботясь о проекте Data, а проекты с разнесенными данными могут быть подключены к проекту приложения, и пока он реализует интерфейс, все будет работать.
Почему возникает вопрос: где должен работать интерфейс? Если он живет в приложении, то данные теперь зависят от приложения. Но если он живет в Data, он должен быть скопирован в любые новые проекты Data, которые могут быть захоронены.
Я приведу еще один пример: предположим, что приложение является инструментом для продажи в Интернете. Возможно, вам понадобятся два экземпляра одного и того же проекта приложения, один для eBay и один для Amazon. Экземпляр eBay имел бы проект Data, который бы делал вещи с eBay, а экземпляр Amazon имел бы другой проект Data. Как я могу структурировать приложение, чтобы один и тот же компонент приложения мог быть развернут в обоих экземплярах? Правильно ли используется интерфейс?
А я вижу. Таким образом, реализующий объект ссылается на проект интерфейса. Должен ли основной проект ссылаться на проект интерфейса и проект-исполнитель? иначе как вы на самом деле создаете экземпляр класса реализации с основным проектом? – user1886323