抽象工厂模式
之前看过一个帖子,写的还是很清晰的,网址记不住了,没保存!现在就引用一下这个例子
一个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) 收藏 举报