Сколько типов должно реализовывать шаблон Repository? - PullRequest
2 голосов
/ 29 декабря 2008

Я пытаюсь использовать шаблон хранилища в случае сохранения изображений.

Что я делаю, это сохраняю реальные фотографии в каталоге на диске, но сохраняю данные о фотографиях и какие фотографии идут с каким объектом в базе данных. Мне было интересно, если я должен использовать 2 интерфейса для хранения, как IStorePicRepo и IStorePicDataRepo или иметь 1 интерфейс и реализовать его в 1 классе. Мне кажется, что это НЕ должно быть реализовано одним и тем же классом, так как мы имеем дело с двумя различными механизмами хранения.

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 29 декабря 2008

Здесь нет серебряной пули.

Но я, вероятно, получу следующий дизайн:

IBinaryDataService: Для общего сохранения данных в двоичном формате. Сохраняемые объекты должны иметь метод, помогающий записать его в OutputStream. Должен быть удобный метод для загрузки его в исходный объект.

IDataIndexService: Для индекса атрибутов данных / тегов, чтобы помочь в поиске, а также. Точно соответствуют данным рис., Который вы описали.

IPicRepo: Только интерфейс, выставленный клиенту. Клиенты должны использовать это, и никогда не знать о вышеупомянутых двух услугах.

FileSystemBinaryDataServiceImpl: Реализация службы IBinaryDataService выше.

DbDataIndexServiceImpl: Реализация службы IDataIndexService выше.

PicRepoImpl: Реализация IPicRepo выше. Используйте Spring для внедрения FileSystemBinaryDataServiceImpl и DbDataIndexServiceImpl в качестве зависимостей.

Дополнительные расширения, если вы хотите:

IPersistentModel: Представление объекта, который может быть сохранен. Имеет методы write (OutputStream), read (inputStream) и getAttributes (): Map

PicModel: Реализация IPersistentModel выше.

PS. Это просто общий обзор высокого уровня.

1 голос
/ 29 декабря 2008

Я не знаю много о шаблоне Repository, но я бы не стал сокращать Repository как Repo в моем имени идентификатора. Abbrs. смущай меня.

...