Предложение выбрать правильный дизайн шаблона - PullRequest
0 голосов
/ 01 марта 2019

Меня просят предоставить документацию проекта для a "deal service" that de-couples the user’s requests from the requests to the partners who provide rental rates. the service does so, by looking up a cache, and fetching whatever is missing in a long-running process.

. Я думаю о том, какой шаблон проектирования подойдет для программного обеспечения.Мне не нужно писать рабочий код, только проектную документацию.

Я думаю о комбинации модели посредника и модели Flyweight.

Шаблон посредника определяет объект, который инкапсулирует, как взаимодействует набор объектов.Посредник способствует слабой связи, не позволяя объектам явно ссылаться друг на друга, и позволяет независимо изменять их взаимодействие.Вместо того, чтобы взаимодействовать напрямую друг с другом, объекты просят посредника взаимодействовать от их имени, что приводит к повторному использованию и слабой связи.

С другой стороны, шаблон Flyweight предназначен для управления созданием объектов, когда объекты вПриложение имеет большое сходство и похожего типа, и предоставляет вам основной механизм кэширования.Это позволяет вам создавать один объект для каждого типа (тип здесь отличается от свойства этого объекта), и если вы запрашиваете объект с тем же свойством (уже созданным), он вернет вам тот же объект вместо создания новогоодин.

У вас есть лучшие предложения?

1 Ответ

0 голосов
/ 01 марта 2019

Больше похоже на оркестровку потока.Я просто сконструировал бы VO и передал бы его оркестратору, а затем здесь я буду использовать шаблон команды (вместе с Abstract factory, если необходимо), где каждая команда несет ответственность за вызов службы (ов) партнера и возврат DealsVO / TO / DTO (независимо от того, чточерт возьми, что это!).Я бы также использовал шаблон построителя для создания вашего запроса к каждой партнерской службе, сохраняя все установщики вне изображения, делая запрос неизменным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...