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