Добрый день, потихоньку осваиваю Дарт. Есть опыт разработки на Java, по этому пробую сделать по аналогии, но что-то меня смущает. В общем, задача сделать ДАО слой. За основу взял это:
www.oracle.com/technetwork/java/dataaccessobject-1...
У меня получилась следующая структура пакетов и нужных классов:
db/
+ sqlite
| +- SqLiteDaoFactory
+- AbstractDaoFactory
В
AbstractDaoFactory есть статический метод, который возвращает запрошенную реализацию фабрики:
static DaoFactory getDAOFactory(StorageType type) {
switch (type) {
case StorageType.SQLITE:
return new SqliteDaoFactory();
default:
return null;
}
}
При этом мы получаем циклическую зависимость между пакетами
db/ и
db/sqlite. Т.к. SqliteDaoFactory наследуется от
AbstractDaoFactory. Что-то мне это не очень нравится. Как это правильно делать в Дарте? Складывать все в один пакет как-то не очень хочется.
Пару дополнений. Слой абстракции нужен т.к. планирую тестировать различные базы данных. Возможно, даже использовать различные реализации для различных задач. Тот код, который видел в статьях по Flutter, ну совсем не нравится. Там вообще вся работа с БД в один класс свалена.
Flutter и так как-то чертовски запутан по сравнению с тем же Swing, так что не хочется получать гемор на пустом месте при работе с БД.