工厂应该坚持他们建造的实体吗?或者那是打电话的工作?伪示例传入:
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 :(得分:6)
作为一般规则,工厂只有一个责任:创建一个实例并将其返回。我不会混淆持久性。我认为这是另一个班级的责任。在这种情况下,它将是控制器。
答案 1 :(得分:1)
工厂的主要目的是对象的创建。一旦创建了该对象,由您自己决定要用它做什么。
唯一不同的情况是,如果还要求只存在一次创建对象的实例,在这种情况下,你将会有某种伪工厂单例混合模式。
答案 2 :(得分:1)
如果决定将工厂用于单件对象,则需要管理单例对象的持久性。除此之外,我不明白你为什么要让工厂管理持久性。
实际上,让工厂管理持久性 - 除了涉及单身人士之外 - 会导致与正确分离关注点完全相反,这是首先使用工厂的存在理由。