软件编程
位置:首页>> 软件编程>> C#编程>> C#通过抽象工厂模式造车

C#通过抽象工厂模式造车

作者:Darren?Ji  发布时间:2021-07-05 04:20:55 

标签:C#,抽象,工厂,模式,造车

可以用抽象工厂模式来造车。

车的品牌有很多,而且车的属性也不少,比如车的类型、排量、门的数量,等等。可以提炼出有关车的一个抽象类:

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、通过抽象工厂造车,必须把所有的细节都设计在代表车的抽象类中,扩展性不好

来源:https://www.cnblogs.com/darrenji/p/4619346.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com