2016-03-31 4 views
0

Мне нужно сделать пару сервисов, которые будут разговаривать как с Amazon S3, так и с Riak CS.Структура класса для клиентской библиотеки

Они будут обрабатывать те же операции, например. извлекать изображения.

Из-за того, что они возвращают разные объекты, в случае S3 S3Object. Является ли подходящий способ разработки этого для каждого класса для каждого без общего интерфейса?

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

Спасибо всем!

ответ

1

Как правило, вы делаете это, обертывая ответы различных внешних служб собственными классами, имеющими общий интерфейс. Вы также обертываете сами сервисы, поэтому, когда вы вызываете свои обертки, они возвращают ваши завернутые классы данных. Затем вы изолировали все ссылки на внешнюю службу в один пакет. Это также упрощает добавление или удаление служб.

0

Точный ответ на ваш вопрос потребует знания языка, который вы используете, и/или платформы. Эрик в своем ответе выше правильно, что обертывание данных внутри одного из ваших собственных классов является одним из способов справиться с этим. Однако, в зависимости от языка, детали окончательной реализации будут меняться, и объем работы, требуемый при добавлении возможного типа возвращаемого значения, также будет различаться. В Java, например, одним из способов обработки этого является возврат гетерогенного контейнера. Взгляните на эту резьбу: Type safe heterogeneous container pattern to store lists of items

Смежные вопросы