工廠模式(Factory Pattern)

Factory Pattern 創造型設計模式,提供一個創造對象的方式,在工廠模式中,創造對象的邏輯不對外暴露建立,只提供一個建立的接口。設計模式

定義一個建立對象的接口,其子類決定去建立哪個實例對象,建立過程在之類中進行。設計

圖

工廠模式code

優勢:調用者使用甚至須要知道建立對象的名字就能夠,擴展性強,若是想增長,只須要增長一個工廠類就能夠了,屏蔽產品的具體實現,只提供接口。
缺點:每增長一個工廠類,都須要增長一個工廠類和對象實現工廠,使系統類成倍增長,在必定程度上增長了系統的複雜度,也增長了系統具體類的依賴。對象

使用場景:複雜對象使用工廠模式,而簡單對象則直接new 對象,若是簡單對象使用工廠模式,就須要引入一個工廠類,增長系統複雜度blog

實例應用:一、超市打折活動,可能會有滿減、8折、9折等等活動,這個時候就能夠使用工廠模式。
二、建立不一樣品牌的手機,每臺手機都有打電話,發信息等功能繼承

代碼:
一、先建立一個手機的接口:接口

public interface Phone
    {
        string GetPhoneMessage();
    }

二、建立繼承手機接口-華爲手機、小米手機等string

public class Huawei : Phone
    {
        public string GetPhoneMessage()
        {
            return "Vender Name:Huawei";
        }
    }
public class MI : Phone
    {
        public string GetPhoneMessage()
        {
            return "Vender Name:Xiao Mi";
        }
    }

三、建立工廠類:根據條件建立對應的對象,條件能夠本身設定產品

public class PhoneFactory
    {
        public static Phone GetPhone(Enum type)
        {
            Phone phone = null;

            switch (type)
            {
                case Vender.Huawei:
                    phone = new Huawei();
                    break;
                case Vender.Mi:
                    phone = new MI();
                    break;
                default:
                    break;
            }

            return phone;
        }
    }

    public enum Vender
    {
        Mi = 1,
        Huawei = 2
    }

四、調用it

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("======工廠模式======");
            Phone phone = PhoneFactory.GetPhone(Vender.Huawei);
            Console.WriteLine(phone.GetPhoneMessage());
            phone = PhoneFactory.GetPhone(Vender.Mi);
            Console.WriteLine(phone.GetPhoneMessage());
            Console.ReadLine();
        }
    }

效果:
效果圖

相關文章
相關標籤/搜索