Мне нужно провести рефакторинг нескольких длинных методов.
В нашем приложении мы создаем серию документов одного типа с разными значениями, полученными из значений в приложении. Весь этот код теперь находится во вспомогательном классе, однако я хочу использовать фабричный класс для создания документов. Фабрика должна вести себя так, что если A
, то вызвать factory.getDocument("A")
, если B
, то вызвать factory.getDocument("B")
.
Моя проблема в том, что для построения документа мне нужны значения из моей базы данных, и я где-то читал (или кто-то мне посоветовал), что службы не должны включаться в фабричные классы. Если это так, как я могу построить полные объекты?
Допустимо ли делать вызовы service / db в моем заводском классе?
Если нет, то должен ли я передавать аргументы для значений, которые мне нужны для построения объекта (например, factory.getDocument(a,b,c,d)
или inputobject
)? Похоже, это лишает смысла иметь фабричный класс, потому что вызывающей стороне потребуется информация о том, как сделать документ A
, поэтому я предпочел бы избежать такого подхода. Я хочу, чтобы вызывающий метод ничего не знал о том, как создается документ.
Какие у меня варианты?