コード例 #1
0
        static void AbstractFactory()
        {
            var copFactory = new CopFactory();
            var quarter    = CreateHeroe(copFactory);
            var personal   = (Cop)quarter.GetPersonal();

            personal.PatrolStreet(new House(100, 25, 4));
            quarter.AddResponsable(personal);
            quarter.AddTool(personal.Tool);
            quarter.AddVehicle(personal.Vehicle);

            var fireFactory = new FireFighterFactory();

            quarter = CreateHeroe(fireFactory);
            var personal2 = (Firefighter)quarter.GetPersonal();

            personal2.PutOutFire(new House(100, 25, 4), new Street(25, 4, 10));
            quarter.AddResponsable(personal2);
            quarter.AddTool(personal2.Tool);
            quarter.AddVehicle(personal2.Vehicle);

            var electriciaFactory = new ElectricianFactory();

            quarter = CreateHeroe(electriciaFactory);
            var personal3 = (Electrician)quarter.GetPersonal();

            personal3.changeBurntLamps(new Street(25, 4, 10));
            quarter.AddResponsable(personal3);
            quarter.AddTool(personal3.Tool);
            quarter.AddVehicle(personal3.Vehicle);
        }
コード例 #2
0
        public Firefighter CreateHeroe(CompliantHandler handler)
        {
            if (_fireFighterFactory == null)
            {
                _fireFighterFactory = new FireFighterFactory();
            }

            var fireman = (Firefighter)_fireFighterFactory.CreateHeroe(handler);

            fireman.Tool    = _fireFighterFactory.CreateTool();
            fireman.Vehicle = _fireFighterFactory.CreateVehicle();

            DisplayStrategy();

            var success = Int32.TryParse(Console.ReadLine(), out int strategySelect);

            while (!success || strategySelect >= 3)
            {
                Console.Clear();
                Console.WriteLine("Wrong option! :( Please try again.");
                DisplayStrategy();
                success = Int32.TryParse(Console.ReadLine(), out strategySelect);
            }

            var strategy = (FireFighterStrategyEnum)strategySelect;

            switch (strategy)
            {
            case FireFighterStrategyEnum.Sequential:
                fireman.ChangeExtinguishStrategy(new SequentialStrategy());
                break;

            case FireFighterStrategyEnum.StairCase:
                fireman.ChangeExtinguishStrategy(new StaircaseStrategy());
                break;

            case FireFighterStrategyEnum.Spiral:
                fireman.ChangeExtinguishStrategy(new SpiralStrategy());
                break;

            default:
                break;
            }

            return(fireman);
        }