Дизайн шаблона;класс с разными методами, и они могут вести себя по-разному, зависит от нескольких вещей - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужно создать систему, которая будет взаимодействовать с различными системами наших клиентов. Будет доменный уровень, который будет выполнять различные вычисления, но для простоты, давайте перейдем только к одной функции с именем «GenerateToken», которая имеет алгоритм для создания токена доступа.

У нас разные клиенты, использующие разные версии API. Чтобы было проще визуализировать, я попытаюсь объяснить на примере:

1.Company A is X type of customer – uses API v.1.0
2.Company B is X type of customer – uses API v.1.1
3.Company C is Y type of customer – uses API v.2.0
4.Company D is Z type of customer – uses API v.1.0
5.Company E is X type of customer – uses API v.1.1
6.Company F is Z type of customer – uses API v.2.0

Если версии API и типы компаний совпадают, это означает, что способ генерирования токена одинаков. Например; Функция «GenerateToken» будет принимать те же параметры и иметь тот же алгоритм для 2-го и 5-го случаев в примере. «GenerateToken» является лишь примером, и в будущем у него будет гораздо больше вычислений, что означает, что одной из самых важных вещей будет расширяемость (принцип открытого закрытия) для дизайна.

Мой вопрос заключается в том, что я не мог решить, с какой архитектурой или шаблоном дизайна мне следует идти. Я могу создать родительский класс с «GenerateToken», а затем переопределить его из дочерних функций (Polymophism) или использовать что-то похожее на «Factory Method Pattern». Однако в этих случаях мне нужно будет создать класс почти для каждого типа компании с версией API (класс TypeXApiV1.0, TypeXApiV1.1, TypeYApiV1.0 и т. Д.), Что выглядит глупо.

Что бы вы предложили для этого решения или есть какой-то шаблон проектирования, который я могу использовать. Я надеюсь, что смогу объяснить ситуацию. Если я что-то упускаю или не могу четко объяснить, пожалуйста, дайте мне знать. Спасибо.

1 Ответ

0 голосов
/ 15 сентября 2018

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

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