#typescript #class #design-patterns #factory
Вопрос:
У меня есть приложение, в котором у меня есть 10 различных типов заказов, это огромные объекты с примерно 400 свойствами, с незначительными различиями между ними, на данный момент добавление нового типа заказа или изменение чего-либо в одном из них требует огромных усилий.
Поскольку в ближайшее время я выполняю рефакторинг в сочетании с редизайном, я искал способ облегчить себе задачу.
Заводской метод выглядит очень привлекательным, но я не могу представить, что он работает для меня, так как у меня есть некоторые методы, которые реализованы только для некоторых или одного типа заказа. Но в идеале лучше всего было бы создать фабрику, просто вызывающую одни и те же функции и не заставляющую клиента беспокоиться о типе заказа, но я думаю, что это невозможно, так как, например, для некоторых типов заказов у меня есть подписки, для других у меня простые платежи, или к некоторым прикреплены разные виды произведений искусства, или разные виды целевой аудитории. Но они не сильно отличаются, просто некоторые функции делают не совсем одно и то же, должен ли я иметь общий способ именования функций, который в целом описывает действие и реализует его для конкретного порядка таким образом?
Я подумал, что если бы что-то вроде класса строителей имело бы больше смысла в этом контексте, я не очень опытный человек в такого рода дизайне и планировании.
Должен ли я предоставить больше контекста для этого или привести несколько примеров, придумать какие-то фиктивные данные? Или мы можем сделать и обоснованное предположение? Или мнение о том, что могло бы облегчить мне жизнь.
Комментарии:
1. Здесь недостаточно информации, чтобы дать конкретный совет. С учетом сказанного я чувствую, что вам нужно разобраться с корнем проблемы: » это огромные объекты, имеющие около 400 свойств, с незначительными различиями между ними «, — это звучит так. Извлеките различия и сделайте заказы составными, чтобы все различные детали были взаимозаменяемыми. Или разлучить их каким-нибудь другим способом. Мне трудно представить себе хороший класс, которому нужно так много свойств.
2. » для некоторых типов заказов у меня есть подписки, для других у меня есть простые платежи, или к некоторым прикреплены разные виды произведений искусства, или разные виды целевой аудитории». это звучит как совершенно несвязанные вещи. Обработчик платежей, диспетчер отображения, и я не уверен, как используется целевая аудитория, но функциональность, скорее всего, может быть разделена и сохранена независимо от заказа.