Пример #1
0
        static void Main(String[] args)
        {
            Factory.Instance.Chicken().Create(out IEgg egg_1);
            Console.WriteLine($"Created {egg_1.GetType().Name} ({nameof(egg_1)})");

            ICreature creature_1 = egg_1.Hatch();

            Console.WriteLine($"{egg_1.GetType().Name} has hatched a {creature_1.GetType().Name} ({nameof(creature_1)}))");

            creature_1.Factory = Factory.Instance.Ostrich();
            Console.WriteLine($"Injected egg factory into {creature_1.GetType().Name}");

            IEgg egg_2 = creature_1.Lay();

            Console.WriteLine($"{creature_1.GetType().Name} has layed a {egg_2.GetType().Name} ({nameof(egg_2)})");

            ICreature creature_2 = egg_2.Hatch();

            Console.WriteLine($"{egg_2.GetType().Name} has hatched a {creature_2.GetType().Name} ({nameof(creature_2)})");

            IEgg egg_3 = creature_2.Lay();

            Console.WriteLine($"{creature_2.GetType().Name} has layed a {egg_3.GetType().Name} ({nameof(egg_3)})");

            egg_3.Factory = Factory.Instance.TRex();
            Console.WriteLine($"Injected creature factory into {egg_3.GetType().Name}");

            ICreature creature_3 = egg_3.Hatch();

            Console.WriteLine($"{egg_3.GetType().Name} has hatched a {creature_3.GetType().Name} ({nameof(creature_3)})");
        }