2
我正在运行一个教程,我理解正在教什么,示例代码如上所述工作。但我错过了拼图的一部分,这就是工厂如何知道使用哪个“创造”......所以我想我不明白所教的一切。这个模型工厂如何知道使用哪种方法?
在试图研究我碰到this article但它没有回答我的“它是如何知道”的问题,因为他们的情况稍有不同。
_modelFactory.Create(f)是什么令我困惑。
这里是正在执行
_modelFactory = new ModelFactory();
...snip....
public IEnumerable<FoodModel> Get(bool includeMeasures = true)
{
IQueryable<Food> query;
if (includeMeasures)
{ query = _repo.GetAllFoodsWithMeasures(); }
else
{ query = _repo.GetAllFoods(); }
var results = query.OrderBy(f => f.Description).Select(f => _modelFactory.Create(f));
return results;
}
在模范工厂代码有两个创建
public class ModelFactory
{
public FoodModel Create(Food food)
{
return new FoodModel()
{ ... };
}
public MeasureModel Create(Measure measure)
{
return new MeasureModel()
{ ... };
}
}
有一些隐含的关联,因为“查询”是食物的种类和modelFactory说哦,我会使用FoodModel,因为那是食物的实体表示形式?
但是对我来说有一些微软的魔力。我实例化ModelFactory ...它没有创建...它自动知道。 – GPGVM 2014-12-05 16:22:42
我不确定你的意思 - 你的示例代码在'ModelFactory'类中有两个'Create'方法。 'Create'只是一个方法名称,不是构造函数或任何特殊的东西。 – 2014-12-05 16:25:08