zoukankan      html  css  js  c++  java
  • 抽象工厂模式造车

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

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

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

  • 相关阅读:
    神经网络之非线性分类器——神经网络
    卷积神经网络之迁移学习
    卷积神经网络之卷积的结构和参数的多少
    卷积神经网络之卷积的物理意义
    神经网络的后续改进
    图像的矩 图像的轮廓面积和长度
    包围轮廓的矩形边界 opencv
    Linux中的环境变量配置文件及其作用
    Linux中的数值运算
    Linux中接收键盘输入
  • 原文地址:https://www.cnblogs.com/darrenji/p/4619346.html
Copyright © 2011-2022 走看看