抽象工厂模式造车

 

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

 

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值