設計模式(一):簡單工廠

K戰神發表於2016-01-04

一、定義

定義無需贅述,根據引數判斷例項化哪個物件。替換讓人眼花繚亂的if語句。

二、例項程式碼

定義介面:

public interface IService
{
}

BL和WCF繼承並實現:

public class BL:IService
    {
        public  BL()
        {
            Console.WriteLine("BL.");
        }
    }

 

public  class WCF:IService
    {
        public WCF()
        {
            Console.WriteLine("WCF.");
        }
    }

最後就是我們根據引數指定建立物件:

 public class FactoryBuilder
    {
        public static IService Create  (string key)
        {
            IService service;
            switch (key.ToLower())
            {
                case "bl":service = new BL();break;
                case "wcf": service = new WCF();break;
                default: throw new System.Exception(string.Format("Key:{0} is wrong", key));
            }
            return service;
        }

    }

客戶端呼叫:

//簡單工廠模式

Factory.IService service = Factory.FactoryBuilder.Create("BL");

 

三、優缺點

優:簡單實用,很多地方可以使用。客戶端不用關心怎麼建立什麼例項,只管傳參。

缺:違背了,對修改封閉,對擴充套件開放的原則。因為每次新增新的服務型別,我們都要修改工廠類。。。

相關文章