第 8 章 工廠方法模式

工廠方法模式:spa

定義一個用戶建立對象的接口,讓子類決定實例化哪個類,工廠方法是一個類的實例化延遲到了其子類。
 
工廠方法模式實現時,客戶端須要決定實例化哪個工廠來實現運算類,選擇判斷的問題仍是存在的,也就是說,
工廠方法吧簡單工廠的內部邏輯判斷移到了客戶端代碼來進行。你想要加功能,原本是要改工廠類的,而如今是修改客戶端。

 

 

    /// <summary>
    /// 雷鋒
    /// </summary>
    public class LeiFeng
    {
        public void Wash()
        {
            Console.WriteLine("洗衣");
        }

        public void Sweep()
        {
            Console.WriteLine("掃地");
        }
    }

    /// <summary>
    /// 大學生
    /// </summary>
    public class Undergraduate : LeiFeng
    {

    }

    /// <summary>
    /// 社區志願者
    /// </summary>
    public class CommunityVolunteer : LeiFeng
    {

    }

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


    /// <summary>
    /// 大學生雷鋒工廠
    /// </summary>
    public class UndergraduateFactory : IFactory
    {
        public LeiFeng CreateLeiFeng()
        {
            return new Undergraduate();
        }
    }

    /// <summary>
    /// 社區志願者雷鋒工廠
    /// </summary>
    public class CommunityVolunteerFactory : IFactory
    {

        public LeiFeng CreateLeiFeng()
        {
            return new CommunityVolunteer();
        }
    }

客戶端調用code

IFactory factory = new UndergraduateFactory();
LeiFeng leifeng = factory.CreateLeiFeng();
leifeng.Sweep();
leifeng.Wash();

factory = new CommunityVolunteerFactory();
leifeng = factory.CreateLeiFeng();
leifeng.Sweep();
leifeng.Wash();

結果對象

相關文章
相關標籤/搜索