在C# 2.0上寫另外一種語言來建立對象

來源:互聯網
上載者:User
建立對象有很多種方式,可以用工廠,可以用容器裝配。所以不在乎再多一種啦。。。在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的事情,但是還沒想好怎麼弄。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.