建立對象有很多種方式,可以用工廠,可以用容器裝配。所以不在乎再多一種啦。。。在C#上寫了一種古怪的建立對象的方式,給大家kk。
首先,這是配置代碼。意思是說在Lily的宇宙中(每個人都有一個小宇宙,聖鬥士。。。),她的Boy是tom,也就是我的眼中只有你。相應的在Lucy的眼中只有joy。
Tom tom = Void.GiveMe<Tom>();
Joy joy = Void.GiveMe<Joy>();
Void.UniverseOf<Lily>().Exist(tom);
Void.UniverseOf<Lucy>().Exist(joy);
然後是建立兩個女孩子的代碼:
Lily lily = Void.GiveMe<Lily>();
lily.Kiss();
Lucy lucy = Void.GiveMe<Lucy>();
lucy.Kiss();
運行這段代碼就可以看到少兒不宜的情境了。。。:
Lily is kissing Tom
Lucy is kissing Joy
產生這樣的結果的原因是:
public abstract class Girl : God
{
public abstract string Name { get; }
public void Kiss()
{
Boy boy = GiveMe<Boy>();
Console.WriteLine("{0} is kissing {1}", Name, boy.Name);
}
}
Girl的男朋友從哪裡來的?偷來的?搶來的?騙來的?。。。
GiveMe是哪裡來的方法?它是上帝的安排啊:
public abstract class God
{
protected abstract T GiveMe<T>();
}
旁白:其實本來沒有神,每個人都是神。。。
上帝怎麼實現GiveMe的呢?這就是Void關心的事情了。因為女孩子們是這麼建立的:
Lily lily = Void.GiveMe<Lily>();
Lucy lucy = Void.GiveMe<Lucy>();
所以說,這根本就是一個圈。。。因為我要做的其實是完全廢棄標準的new和建構函式,採用自己的方式來建立和初始化對象,所以我不把這個叫做某某架構,獨立使用也沒有價值,它其實是一種語言。這種語言在後面我會用來幹一些fancy的事情,但是還沒想好怎麼弄。。。