2010-04-20 3 views
0

Должны ли заводы сохранять объекты, которые они строят? Или это задание вызывающего? Псевдо Пример поступления:Если фабрики сохраняют сущности?

public class OrderFactory 
    { 
     public Order Build() 
     { 
     var order = new Order(); 
     .... 
     return order; 
     } 
    } 

public class OrderController : Controller 
{ 
    public OrderController(IRepository repository) 
    { 
     this.repository = repository; 
    } 

    public ActionResult MyAction() 
    { 
     var order = factory.Build(); 
     repository.Insert(order); 
     ... 
    } 
} 

или

public class OrderFactory 
{ 
    public OrderFactory(IRepository repository) 
    { 
    this.repository = repository; 
    } 

    public Order Build() 
    { 
    var order = new Order(); 
    ... 
    repository.Insert(order); 
    return order; 
    } 
} 

public class OrderController : Controller 
{ 
    public ActionResult MyAction() 
    { 
    var order = factory.Build(); 
    ... 
    } 

}

Есть ли рекомендуемая практика здесь?

+0

Я не создал все частные поля, необходимые в этих классах, но вы должны понять, что я думаю. – mxmissile

+0

Спасибо, все хорошие ответы! – mxmissile

ответ

6

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

+0

Я слишком медленный: p – zincorp

1

Основная цель завода - создание объектов. Как только этот объект был создан, вам решать, что вы хотите с ним сделать.

Единственный случай, когда это было бы иначе: если существует требование, чтобы существовал только один экземпляр созданного объекта, и в этом случае вы будете иметь гибридный шаблон псевдо-фабрично-одиночного типа.

1

Если вы решили использовать фабрику для одиночных объектов, вам необходимо будет управлять сохранением объекта singleton. Помимо этого, я не понимаю, почему вы хотите, чтобы фабрики управляли упорством.

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

Смежные вопросы