• 抽象工厂模式造车


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

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

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

  • 相关阅读:
    Web API中的消息处理程序(Message Handler)
    Web API中的模型验证
    autoconf配置的项目,编译debug版本
    gcc编译工具生成动态库和静态库之一----介绍
    VMware中四种网络连接模式的区别
    vmware虚拟机三种网络模式的区别
    code block自动生成makefile
    centos7 安装 codeblock(rpm)
    利用cbmakegen导出Code::blocks的Makefile
    C/C++程序CPU问题分析
  • 原文地址:https://www.cnblogs.com/darrenji/p/4619346.html
Copyright © 2020-2023  润新知