Re[3]: Factory pattern
От: stomsky Россия  
Дата: 31.01.17 07:00
Оценка:
Здравствуйте, 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) И. Ефремов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.