只是在鬼混,我有這個想法,這是一個很好的實現一個通用的工廠方法模式?這可以作爲一個通用工廠方法嗎?
工廠代號:
public static class Factory
{
public static T Create<T>() where T : new()
{
return new T();
}
}
調用工廠別處:
class Program
{
static void Main(string[] args)
{
var obj = Factory.Create<Person>();
obj.Name = "Mark";
Console.WriteLine(obj.Name);
var obj2 = Factory.Create<Animal>();
obj2.AnimalType= "Dog";
Console.WriteLine(obj2.AnimalType);
dynamic obj3 = Factory.Create<ExpandoObject>();
obj3.Age= 20;
Console.WriteLine(obj3.Age);
Console.ReadKey();
}
}
我的意思是按預期工作......但你在這裏看到的任何問題?因爲我不...
任何意見將超過讚賞,因爲我打算利用工廠來實例化對象和這些似乎不錯..
在此先感謝:d
編輯:爲了澄清問題,我修改了工廠方法的名稱,因爲之前的名稱是GetInstance並且令人困惑。
我不確定我是否真的瞭解Factory,因爲我只讀過「Head-first:設計模式」。但是,根據我的經驗,工廠應該生產一些產品具有相同的祖先(或實現相同的界面)。而你的工廠只限於「新()」條件。我認爲這意味着每個T都是Object的繼承者,但Object沒有提供Age,AnimalType或Name。在我看來,工廠應該是更多的條件T. –
爲什麼動態爲obj3 –
使用[autofac](http://code.google.com/p/autofac/)。當你爲相同類型調用GetInstance兩次時,你的工廠將返回一個新實例 –