C# 建设者和工厂方法合一

C# 建设者和工厂方法合一,c#,.net,builder,C#,.net,Builder,我发现,将构建器注入类中,我永远无法确定构建器所处的状态。我想让建筑商有能力建造。。。本身 有人做过这样的事吗 public interface IProductBuilder{ // Creates a new instance of the builder IProductBuilder Create(); // Adds a part IProductBuilder Add(IPart Part); // Creates the product IP

我发现,将构建器注入类中,我永远无法确定构建器所处的状态。我想让建筑商有能力建造。。。本身

有人做过这样的事吗

public interface IProductBuilder{
   // Creates a new instance of the builder
   IProductBuilder Create();

   // Adds a part
   IProductBuilder Add(IPart Part);

   // Creates the product
   IProduct Build();
}
下面是一个用例:

[Export]
public class SomeClass : ISomeService{
    [ImportingConstructor] // inject through MEF
    public SomeClass(IProductBuilder builder){
        this.builder = builder;
    }
   public IBar bar SomeFunction(IPart foo)
   {
     var mybuilder = builder.Create(); // was the builder populated?
     builder.Add(foo); 
     return builder.build();
   }
}
当然,这意味着构建器本身要么一直都是徒劳地创建的,要么我可以让它成为单例


感谢您的反馈。

为什么您的构建器状态良好?你在用mybuilder做什么?同意Daniel的说法,为什么一个现有的生成器实例要对工厂行为负责?(更不用说用
.Add
)嗯。。所有的构建器都是有状态的。@drozzy,是的,在内部。(对我来说)很奇怪,它作为公共接口的一部分是有状态的。为什么一个实例方法被传递给一个对象,而这个对象(可能)被添加到依赖于构建器的类集合中?为什么不直接添加到集合中?