设计模式——工厂模式

一、简单工厂模式

 public enum From
    {
        HeBei,
        ChongQing,
    }

    public abstract class DoThings
    {
        public abstract void GoShopping();
        public abstract void NiDongDe();
    }

    public class HB : DoThings
    {

        public override void GoShopping()
        {
            Console.WriteLine("买买买!吃吃吃!");
        }

        public override void NiDongDe()
        {
            Console.WriteLine("和河北妹子做想做的事。。。");
        }
    }

    public class CQ : DoThings
    {
        public override void GoShopping()
        {
            Console.WriteLine("还是 买买买!吃吃吃!");
        }

        public override void NiDongDe()
        {
            Console.WriteLine("和重庆辣妹子做想做的事。。。");
        }
    }

    public class CreateNiuFactory
    {
        public static DoThings CreateNiu(From from)
        {
            switch (from)
            {
                case From.ChongQing:
                    return new CQ();
                case From.HeBei:
                    return new HB();
            }
            return null;
        }
    }

 

    class Program
    {
        static void Main()
        {
            DoThings dt = CreateNiuFactory.CreateNiu(From.HeBei);
            dt.GoShopping();
            dt.NiDongDe();

            DoThings dt2 = CreateNiuFactory.CreateNiu(From.ChongQing);
            dt2.GoShopping();
            dt2.NiDongDe();

            Console.WriteLine();
            Console.ReadKey();
        }
    }

 

 

二、工厂模式

    public enum From
    {
        HeBei,
        ChongQing,
    }

    public abstract class DoThings
    {
        public abstract void GoShopping();
        public abstract void NiDongDe();
    }

    public class HB : DoThings
    {

        public override void GoShopping()
        {
            Console.WriteLine("买买买!吃吃吃!");
        }

        public override void NiDongDe()
        {
            Console.WriteLine("和河北妹子做想做的事。。。");
        }
    }

    public class CQ : DoThings
    {
        public override void GoShopping()
        {
            Console.WriteLine("还是 买买买!吃吃吃!");
        }

        public override void NiDongDe()
        {
            Console.WriteLine("和重庆辣妹子做想做的事。。。");
        }
    }

    public interface ICreateNiuFactory
    {
        DoThings CreateNiu();
    }

    public class HBNiu : ICreateNiuFactory
    {
        public DoThings CreateNiu()
        {
            return new HB();
        }
    }

    public class CQNiu : ICreateNiuFactory
    {
        public DoThings CreateNiu()
        {
            return new CQ();
        }
    }

 

    class Program
    {
        static void Main()
        {
            DoThings dt = new HBNiu().CreateNiu();
            dt.GoShopping();
            dt.NiDongDe();

            DoThings dt2 = new CQNiu().CreateNiu();
            dt2.GoShopping();
            dt2.NiDongDe();

            Console.WriteLine();
            Console.ReadKey();
        }
    }

 

 

三、抽象工厂模式

    public enum From
    {
        HeBei,
        ChongQing,
    }

    public abstract class DoThings
    {
        public abstract void GoShopping();
        public abstract void NiDongDe();
    }

    public class HB : DoThings
    {

        public override void GoShopping()
        {
            Console.WriteLine("买买买!吃吃吃!");
        }

        public override void NiDongDe()
        {
            Console.WriteLine("和河北妹子做想做的事。。。");
        }
    }

    public class CQ : DoThings
    {
        public override void GoShopping()
        {
            Console.WriteLine("还是 买买买!吃吃吃!");
        }

        public override void NiDongDe()
        {
            Console.WriteLine("和重庆辣妹子做想做的事。。。");
        }
    }

    public interface ICreateNiuFactory
    {
        DoThings CreateNiu();
        IFather CreateFa();
    }

    public interface IFather
    {
        void Say();
    }

    public class HBFather : IFather
    {
        public void Say()
        {
            Console.WriteLine("河北姑娘的父亲要说些什么");
        }
    }

    public class CQFather : IFather
    {
        public void Say()
        {
            Console.WriteLine("重庆辣妹子的父亲要说些什么");
        }
    }
    public class HBNiu : ICreateNiuFactory
    {
        public DoThings CreateNiu()
        {
            return new HB();
        }


        public IFather CreateFa()
        {
            return new HBFather();
        }
    }

    public class CQNiu : ICreateNiuFactory
    {
        public DoThings CreateNiu()
        {
            return new CQ();
        }

        public IFather CreateFa()
        {
            return new CQFather();
        }
    }

 

    class Program
    {
        static void Main()
        {
            DoThings dt = new HBNiu().CreateNiu();
            dt.GoShopping();
            dt.NiDongDe();

            new HBNiu().CreateFa().Say();

            DoThings dt2 = new CQNiu().CreateNiu();
            dt2.GoShopping();
            dt2.NiDongDe();

            new CQNiu().CreateFa().Say();

            Console.WriteLine();
            Console.ReadKey();
        }
    }

 

 

posted on 2017-06-20 14:46  奔游浪子  阅读(149)  评论(0)    收藏  举报

导航