設計模式系列:抽象工廠模式(Abstract Factory Pattern)


1.介紹

抽象工廠模式(Abstract Factory Pattern)隸屬於設計模式中的創建型模式,用於產品族的構建。抽象工廠是所有形態的工廠模式中最為抽象和最具一般性的一種形態。

抽象工廠是指當有多個抽象角色時使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體情況下,創建多個產品族中的產品對象。 

2.示例

    public class Human : IRace
    {
        public void ShowKing()
        {
            Console.WriteLine("The king of Human is Sky");
        }
    }

 

    public class NE : IRace
    {
        public void ShowKing()
        {
            Console.WriteLine("The king of NE is Moon");
        }
    }

 

    public class Orc : IRace
    {
        public void ShowKing()
        {
            Console.WriteLine("The king of Orc is Grubby");
        }
    }

 

    public class Undead : IRace
    {
        public void ShowKing()
        {
            Console.WriteLine("The king of Undead is Gostop");
        }
    }

 

    public abstract class BaseFactory
    {
        public abstract IRace CreateFirst();
        public abstract IRace CreateSecond();
        public abstract IRace CreateThird();
        public abstract IRace CreateFourth();
    }

 

    public class FrozenThroneFactory : BaseFactory
    {
        #region
        //public Human CreateHuman()
        //{
        //    return new Human();
        //}

        //public NE CreateNE()
        //{
        //    return new NE();
        //}

        //public Orc CreateOrc()
        //{
        //    return new Orc();
        //}

        //public Undead CreateUndead()
        //{
        //    return new Undead();
        //}
        #endregion

        public override IRace CreateFirst()
        {
            return new Human();
        }

        public override IRace CreateSecond()
        {
            return new NE();
        }

        public override IRace CreateThird()
        {
            return new Orc();
        }

        public override IRace CreateFourth()
        {
            return new Undead();
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM