[C.C++] C#通过抽象工厂模式造车

3264 0
黑夜隐士 2022-11-5 09:06:07 | 显示全部楼层 |阅读模式
可以用抽象工厂模式来造车。
车的品牌有很多,而且车的属性也不少,比如车的类型、排量、门的数量,等等。可以提炼出有关车的一个抽象类:
  1.     public abstract class Car
  2.     {
  3.         public string Model { get; set; }
  4.         public string Engine { get; set; }
  5.         public string Transmission { get; set; }
  6.         public string Body { get; set; }
  7.         public int Doors { get; set; }
  8.         public List<string> Accessores = new List<string>();
  9.         public abstract void ShowCarInfo();
  10.     }
复制代码
既然是抽象工厂,提炼出一个造车的接口:
  1.     public interface ICarFactory
  2.     {
  3.         Car ProduceCar();
  4.     }
复制代码
写一个Car的派生类:
  1.     public class MyCar : Car
  2.     {
  3.         public MyCar()
  4.         {
  5.             Model = "型号001";
  6.             Engine = "发动机V";
  7.             Transmission = "排量1";
  8.             Body = "SUV";
  9.             Doors = 4;
  10.             Accessores.Add("内饰");
  11.             Accessores.Add("外饰");
  12.         }
  13.         public override void ShowCarInfo()
  14.         {
  15.             Console.WriteLine(Model);
  16.             Console.WriteLine(Engine);
  17.             Console.WriteLine(Body);
  18.             Console.WriteLine("门数量:" + Doors);
  19.             Console.WriteLine("包括:");
  20.            foreach (var accessory in Accessores)
  21.             {
  22.                 Console.WriteLine("\t{0}", accessory);
  23.             }
  24.         }
  25.     }
复制代码
MyCar需要一个对应的具体工厂来造车。写一个具体工厂类,实现ICarFactory接口。
  1.     public class MyFactory : ICarFactory
  2.     {
  3.         public Car ProduceCar()
  4.         {
  5.             return new MyCar();
  6.         }
  7.     }
复制代码
在客户端,如果要造车,就找具体工厂就可以了。
  1.         static void Main(string[] args)
  2.         {
  3.             ICarFactory carFactory = new MyFactory();
  4.             carFactory.ProduceCar().ShowCarInfo();
  5.             Console.ReadKey();
  6.         }
复制代码
总结:
1、需要工厂生产对象的抽象类以及派生类
2、需要一个抽象工厂接口
3、通过抽象工厂造车,必须把所有的细节都设计在代表车的抽象类中,扩展性不好
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对中国红客联盟的支持。如果你想了解更多相关内容请查看下面相关链接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行