Здравствуйте, Gattaka, Вы писали:
G>>>Для создания такой сущности следует использовать фабрику.
S>>Почему? Какие особенности реализации экземпляров сущности будут скрываться фабрикой?
G>Логика по созданию доменного объекта в нескольких местах. Если добавится еще одно место хранения мы только в фабрике это поправим и все. Не будем по всему коду вычищать.
Я правильно понял, у тебя фабрика не только создает объект сущности, но при этом еще сама же отвечает за его сохранение в базах данных 1С, Галактики и пр.? Мне кажется, это не совсем удачное решение. У паттерна фабрика изначально немного другое предназначение.
Может быть функционал создания, изменения, удаления сущности вынести в отдельный класс (не знаю как его назвать по-научному, предлагаю условное название "EntityDataAccessor"), а фабрика (если она вообще будет нужна после такого рефакторинга) будет создавать экземпляры этого EntityDataAccessor-а?
Ну или, если твоя фабрика это нечто типа:
public class EntityFactory
{
public Entity CreateEntity()
{
...
}
}
То просто перестань рассматривать ее паттерн фабрика, переименовав и расширив этот класс так (см.выделенное жирным):
public class EntityDataAccessor
{
public Entity CreateEntity()
{
...
}
public void Update(Entity entity)
{
...
}
public void Delete(Entity entity)
{
...
}
}
Красота — наивысшая степень целесообразности. (c) И. Ефремов