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