設計模式<二>-抽象工廠

抽象工廠:將一些對象抽象出公共方法接口,也就是通常說的接口類和抽象類,具體對象類基礎抽象類實現具體邏輯


       //定義動物接口
    interface IAnimal
    {
        void Walk();
        void Sex();
    }

    //動物抽象類
    abstract  class AbstractDog
    {
        public void Walk()
        {
            Console.WriteLine("狗走路");
        }
    }

    //具體對象
    class Maledog : AbstractDog,IAnimal
    {
        public void Sex()
        {
            Console.WriteLine("性別男");
        }
    }
    //具體對象
    class FeMaledog : AbstractDog, IAnimal
    {

        public void Sex()
        {
            Console.WriteLine("性別女");
        }
    }
    //工廠接口類
    interface IAnimalFactory
    {
        IAnimal CreateMaleDog();
        IAnimal CreateFeMaledog();
    }

    //工廠抽象類
    abstract class AbastractAnimalFactory
    {
        protected T CreateAnimal<T>() where T :IAnimal, new()
        {
            T animal = new T();
            return animal;

        }
    }
    //工廠實例
    class MaleHumanFactory : AbastractAnimalFactory, IAnimalFactory
    {
        public IAnimal CreateFeMaledog()
        {
           return  CreateAnimal<FeMaledog>();
        }

        public IAnimal CreateMaleDog()
        {
            return CreateAnimal<Maledog>();
        }
    }

    //調用
    class Program
    {
        static void Main(string[] args)
        {
            MaleHumanFactory factory = new MaleHumanFactory();

            IAnimal animal =  factory.CreateFeMaledog();
            animal.Sex();
            Console.Read();
        }
    }

優點:搞內聚,低耦合,結構清晰,代碼複用性強。
使用:通常用於多個不同角色,揹包道具等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章