コード例 #1
0
ファイル: EngineBase.cs プロジェクト: dima92/DesignPatterns
        /// <summary>
        /// Выполнить полет.
        /// </summary>
        /// <param name="energy">Используемый для полета источник энергии.</param>
        /// <returns>Расстояние, на которое выполнился перелет.</returns>
        public virtual int Move(EnergyBase energy)
        {
            if (energy == null)
            {
                throw new ArgumentNullException(nameof(energy));
            }

            energy.Using(UsingEnergy);
            return(1);
        }
コード例 #2
0
ファイル: PulseEngine.cs プロジェクト: dima92/DesignPatterns
        /// <inheritdoc />
        public override int Move(EnergyBase energy)
        {
            if (energy == null)
            {
                throw new ArgumentNullException(nameof(energy));
            }

            // Стандартный режим полета. Не очень быстро, но стабильно.
            var baseSpeed = base.Move(energy);

            return(baseSpeed * _speedFactor);
        }
コード例 #3
0
ファイル: PhotonEngine.cs プロジェクト: dima92/DesignPatterns
        public override int Move(EnergyBase energy)
        {
            if (energy == null)
            {
                throw new ArgumentNullException(nameof(energy));
            }

            // Очень нестабильный, но потенциально быстрый двигатель.

            // Потребляет случайное количество энергии.
            int factorEnergy = _random.Next(0, _maxFactor);

            energy.Using(UsingEnergy * factorEnergy);

            // Движется со случайной скоростью или вообще останавливается.
            int factorSpeed = _random.Next(0, _maxFactor);

            return(UsingEnergy * factorSpeed);
        }
コード例 #4
0
        /// <summary>
        /// Создать экземпляр космического корабля.
        /// </summary>
        /// <param name="name">Название корабля.</param>
        /// <param name="factory">Фабрика, создающая космический корабль.</param>
        public Spaceship(string name, SpaceshipFactoryBase factory)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException(nameof(name));
            }

            if (factory == null)
            {
                throw new ArgumentNullException(nameof(factory));
            }


            Name    = name;
            Type    = factory.Type;
            Health  = factory.Health;
            _energy = factory.CreateEnergy();
            _gun    = factory.CreateGun();
            _engine = factory.CreateEngine();
        }