コード例 #1
0
        static void CreateAndRun(ICarFactory factory, int speed)
        {
            var car = new Car(factory.CreateBody(), factory.CreateEngine(), factory.CreateTank());

            // Ну дальше нужны какие-нибудь формулы пор расчёту скорости в зависимости от веса
            // и прочих факторов, расход топлива... но я по простому сделал.

            Console.WriteLine($"{car.Serial} начала движение.");

            if (speed >= car.Engine.MaxSpeed || speed <= 0)
            {
                speed = car.Engine.MaxSpeed;
            }

            // Просто переменная для простого расчета.
            var percent = 0.01;

            double path        = 0.0;
            double actualSpeed = speed - (car.Body.Weight * percent);

            while (car.Tank.Value != 0)
            {
                path += actualSpeed * car.Tank.Spend(1);
            }

            Console.WriteLine($"Всего пройдено: {path}.");
            Console.WriteLine($"Потрачено топлива: {car.Tank.Capacity}\n\n");

            // Да-да, я знаю, что это не совсем так работает, но это просто простая реализация
            // логики движения, её можно заменить на более сложную с довольно минимальным
            // добавлением / редактированием кода.
        }
コード例 #2
0
        public static Car CreateCar(ICarFactory factory)
        {
            var body     = factory.CreateBody();
            var engine   = factory.CreateEngine();
            var interior = factory.CreateInterior();

            return(new Car(body, engine, interior));
        }
コード例 #3
0
ファイル: Factory.cs プロジェクト: jellymary/design-patterns
 public Car(ICarFactory carFactory)
 {
     Body     = carFactory.CreateBody();
     Engine   = carFactory.CreateEngine();
     Interior = carFactory.CreateInterior();
     Wheels   = carFactory.CreateWheels();
     Windows  = carFactory.CreateWindows();
 }
コード例 #4
0
        public void GetInfo(ICarFactory abstractFactory)
        {
            IBody   body   = abstractFactory.CreateBody();
            IEngine engine = abstractFactory.CreateEngine();

            Console.WriteLine(body.GetDescription());
            Console.WriteLine(body.GetEngineType(engine));
        }
コード例 #5
0
 public static void MakeCar(ICarFactory car)
 {
     Console.WriteLine(car.CreateBody().Name);
     Console.WriteLine(car.CreateEngine().Name);
     Console.WriteLine(car.CreateCabin().Name);
     Console.WriteLine(car.CreateTransmission().Name);
     Console.WriteLine(car.CreateWheels().Name);
     Console.WriteLine(car.Assemble().Name);
     Console.WriteLine();
 }
コード例 #6
0
        public static void PrintCarCharacteristics(ICarFactory factory)
        {
            var body   = factory.CreateBody();
            var engine = factory.CreateEngine();
            var cabin  = factory.CreateCabin();

            Console.WriteLine(
                "Ширина кузова: {0}, высота кузова: {1}, количество лошадиных сил: {2}, вместимость: {3}",
                body.Width, body.Height, engine.HorsePower, cabin.Capacity
                );
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: sateraJS/Patterns
        public static void PrintMenu(ICarFactory factory, string name)
        {
            Console.WriteLine(string.Format("****** Фабрика {0} ******", name));
            var bode = factory.CreateBody();

            Console.WriteLine(bode.Name + '\n');

            var engine = factory.CreatEngine();

            Console.WriteLine(engine.Name + '\n');

            var vehicle = factory.CreateVehicle();

            Console.WriteLine(vehicle.Name + '\n');
        }
コード例 #8
0
 public Car(ICarFactory factory)
 {
     _body  = factory.CreateBody();
     _motor = factory.CreateMotor();
     _cabin = factory.CreateCabin();
 }