抽象工厂模式

之前看过一个帖子,写的还是很清晰的,网址记不住了,没保存!现在就引用一下这个例子

一个4S店需要售卖汽车,应该有主次,比如这个4s店主要销售 volvo,和 保时捷这种高端型汽车

那么如果为了生计,可能需要卖很多低端车,那么这时候就需要 引进更多的车,车型无外乎 轿车 和 SUV卖的好;那么就根据这个创建一个例子

 

 /*
        工厂的作用主要就是生产,你给我图纸,我给你生产,就这么简单
     */
    #region   创建抽象工厂
    //总工厂
    public interface IFactory
    {
        ICar CreateCar();
        ISUV CreateSUV();
    }
    //工厂  轿车部门
    public interface ICar
    {
        string GetCarName();
    }
    //工厂  SUV部门
    public interface ISUV
    {
        string GetSUVName();
    }
    #endregion

    #region   根据 客户图纸 让总工厂开始 实际制造  汽车
    //根据  总工厂指定的规则 开始 制造volvo汽车
    public class VolvoFactory : IFactory
    {
        public ICar CreateCar()
        {
            return new VolovCar();
        }

        public ISUV CreateSUV()
        {
            return new VolvoSUV();
        }
    }

    //volvo轿车 制造车间,  需要继承  总轿车 部门的指令
    public class VolovCar : ICar
    {
        public string GetCarName()
        {
            return "沃尔沃S90  制造成功";
        }
    }

    //volvo suv 制造车间 ,同样需要  继承  总SUV部门的指令
    public class VolvoSUV : ISUV
    {
        public string GetSUVName()
        {
            return "沃尔沃XC90  制造成功";
        }
    }

    #endregion

    #region    开始制造 保时捷
    public class PoescheFactory : IFactory
    {
        public ICar CreateCar()
        {
            return new PoescheCar();
        }

        public ISUV CreateSUV()
        {
            return new PoescheSUV();
        }
    }

    //保时捷  轿车 制造车间,  需要继承  总轿车 部门的指令
    public class PoescheCar : ICar
    {
        public string GetCarName()
        {
            return "帕拉梅沙  制造成功";
        }
    }

    //保时捷 suv 制造车间 ,同样需要  继承  总SUV部门的指令
    public class PoescheSUV : ISUV
    {
        public string GetSUVName()
        {
            return "卡宴  制造成功";
        }
    }
    #endregion
 #region  抽象工厂模式
            //我需要  向你工厂要 产品,哪个部门的我不管,你工厂自己去new
            //比如  我要保时捷卡宴
            IFactory factory = new PoescheFactory();//工厂会向 保时捷大部门要产品
            var pSuvName = factory.CreateSUV().GetSUVName();// 保时捷部门需要向 suv车间去要 具体的产品

            //我还想要  沃尔沃的轿车
            IFactory factory1 = new VolvoFactory();//工厂需要向  沃尔沃的大部门要产品
            var vCarname = factory1.CreateCar().GetCarName();  //沃尔沃大部门向  车间要具体产品

            Console.WriteLine($"客户定制的 :{pSuvName},{vCarname}");
            #endregion

 

posted on 2022-07-21 16:07  泰坦尼克号上的活龙虾  阅读(37)  评论(0)    收藏  举报

导航