代码之家  ›  专栏  ›  技术社区  ›  mxmissile

工厂应该坚持实体吗?

  •  0
  • mxmissile  · 技术社区  · 16 年前

    工厂是否应该坚持他们建造的实体?还是来电者的工作?伪示例传入:

        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();
         ...
      }
    

    }

    这里有推荐的做法吗?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Tom Cabanski    16 年前

    一般来说,工厂只有一个职责:创建一个实例并返回它。我不会坚持下去。我认为这是另一个班的责任。在这种情况下,它将是控制器。

        2
  •  1
  •   zincorp    16 年前

    工厂的主要目的是 创造 对象。一旦创建了这个对象,就由您决定要用它做什么。

    唯一不同的情况是,如果还要求只存在一次所创建对象的实例,那么在这种情况下,您将继续使用某种伪工厂单例混合模式。

        3
  •  1
  •   code4life    16 年前

    如果决定将工厂用于singleton对象,则需要管理singleton对象的持久性。除此之外,我不明白为什么你想让工厂管理持久性。

    事实上,让工厂管理持久性——除了涉及到单件产品——会导致完全相反的问题分离,这是首先使用工厂的理由。

    推荐文章