設計模式----工廠模式

守望陽光01發表於2019-03-24

前面說完簡單工廠,接下來我們說說工廠模式,還是老套路,我們先模擬一個場景,我們想象一下,如果每個人都有雷鋒精神找個世界將是多麼的美好啊(咳咳)。今天程式碼我們擼雷鋒。

首先,我們定義一個雷鋒類,上程式碼

class LeiFeng
    {
        public void Sweep()
        {
            Console.WriteLine("掃地");
        }
        public void Wash()
        {
            Console.WriteLine("洗衣");
        }
        public void BuyRice()
        {
            Console.WriteLine("買米");
        }
    }

雷鋒,很簡單,就三個方法,雷鋒嘛,掃地、洗衣、買米這種事當然是小case了,哈哈,然後我們建立一個工廠介面

 /// <summary>
    /// 雷鋒工廠
    /// </summary>
    interface IFactory
    {
        LeiFeng CreateLeifeng();
    }

這個介面也很簡單,就是一個CreateLeifeng方法,然後返回一個雷鋒物件,正所謂萬物皆物件,我們還怕沒物件嗎(咳咳)

接下來就是去實現這個介面和繼承雷鋒精神了,什麼人去繼承雷鋒的衣缽呢,首選我們選擇的人群是大學生(嘿嘿),上程式碼

class Undergraduate : LeiFeng
    {
    }

這個大學生類就做一件事,繼承雷鋒類,其啥事也不幹,再然後幹嘛呢,當然是建立一個工廠類啊,大學生工廠,把所有的大學生往工廠一丟,然後出來個個都是活雷鋒,多好(幻想中。。)

 class UndergraduateFactory : IFactory
    {
        public LeiFeng CreateLeifeng()
        {
            return new Undergraduate();
        }
    }

這個工廠實現介面IFactory,實現CreateLeifeng這個方法,我們可以看到,在這個方法中,它例項化了一個大學生,然後返回出來了,這個方法的返回物件是Leifeng,如果這裡不明白的同學請看我的設計模式----策略模式,這裡就不再囉嗦了

一個大學生繼承雷鋒精神太單調了,我們再來一個志願者吧,我們也希望志願者們繼承雷鋒精神,同樣的道理

class Volunteer:LeiFeng
    {
    }

建立的志願者類也只幹一件事,就繼承雷鋒類,同樣建立一個志願者工廠

class VolunteerFactory : IFactory
    {
        public LeiFeng CreateLeifeng()
        {
            return new Volunteer();
        }
    }

這個工廠也是一樣,唯一不同的是CreateLeifeng方法中志願者工廠例項化的是志願者物件,好了,我們暫時讓這兩種物件繼承雷鋒精神吧。所有的元件我們都建立好了,接下來,就讓我們啟動工廠,開始生產吧

class Program
    {
        static void Main(string[] args)
        {
            IFactory factory = new UndergraduateFactory();
            LeiFeng student = factory.CreateLeifeng();
            student.BuyRice();
            student.Sweep();
            student.Wash();
            Console.WriteLine("***********");
            Console.Read();
        }
    }

首先,我們例項化了一個大學生工廠,這個工廠專門就是生產大學生雷鋒的,還記得那個CreateLeifeng方法嗎,在大學生工廠裡,它返回的是LeiFeng物件,因為它的父類是Leifeng,所以這兩個物件本質是沒什麼區別的(這就是物件導向的多型)

其實,注意到沒有,在這裡我們的子類完全是繼承了父類,沒有新增任何邏輯,可能我們實現的這個場景並不怎麼恰當,但是意思就是這麼個意思,設計模式重在神不在形,就像內功一樣,沒有形式,只有能量。在不同階段的你再去回看設計模式

會有不同的感悟。好了,今天的工廠模式就說到這。。。。

 

相關文章