Exemplo n.º 1
0
        public void FlyweightTest()
        {
            // The client code usually creates a bunch of pre-populated
            // flyweights in the initialization stage of the application.
            var factory = new FlyweightFactory(
                new Car {
                Company = "Chevrolet", Model = "Camaro2018", Color = "pink"
            },
                new Car {
                Company = "Mercedes Benz", Model = "C300", Color = "black"
            },
                new Car {
                Company = "Mercedes Benz", Model = "C500", Color = "red"
            },
                new Car {
                Company = "BMW", Model = "M5", Color = "red"
            },
                new Car {
                Company = "BMW", Model = "X6", Color = "white"
            }
                );

            factory.ListFlyweights().Count().Should().Be(5);

            AddCarToPoliceDatabase(factory, new Car
            {
                Number  = "CL234IR",
                Owner   = "James Doe",
                Company = "BMW",
                Model   = "M5",
                Color   = "red"
            });

            AddCarToPoliceDatabase(factory, new Car
            {
                Number  = "CL234IR",
                Owner   = "James Doe",
                Company = "BMW",
                Model   = "X1",
                Color   = "red"
            });

            factory.ListFlyweights().Count().Should().Be(6);
        }
Exemplo n.º 2
0
        public static void Run()
        {
            var factory = new FlyweightFactory(
                new Car {
                Company = "Chevrolet", Model = "Camaro2018", Color = "pink"
            },
                new Car {
                Company = "Mercedes Benz", Model = "C300", Color = "black"
            },
                new Car {
                Company = "Mercedes Benz", Model = "C500", Color = "red"
            },
                new Car {
                Company = "BMW", Model = "M5", Color = "red"
            },
                new Car {
                Company = "BMW", Model = "X6", Color = "white"
            }
                );

            factory.ListFlyweights();

            System.Console.WriteLine("Client: adding a car to database");
            var car = new Car()
            {
                Number  = "CL234IR",
                Owner   = "James Doe",
                Company = "BMW",
                Model   = "M5",
                Color   = "red"
            };
            var flyweight = factory.GetFlyweight(car);

            flyweight.Execute(car);

            var newCar = new Car()
            {
                Number  = "CL234IR",
                Owner   = "James Doe",
                Company = "BMW",
            };
            Context context = new Context(factory, car, newCar);

            context.Execute();
        }
        public void Use_Intrinsic_And_Extrinsic_States()
        {
            // The client code usually creates a bunch of pre-populated
            // flyweights in the initialization stage of the application
            var factory = new FlyweightFactory(
                new Car {
                Company = "Chevrolet", Model = "Camaro2018", Color = "pink"
            },
                new Car {
                Company = "Mercedes Benz", Model = "C300", Color = "black"
            },
                new Car {
                Company = "Mercedes Benz", Model = "C500", Color = "red"
            },
                new Car {
                Company = "BMW", Model = "M5", Color = "red"
            },
                new Car {
                Company = "BMW", Model = "X6", Color = "white"
            }
                );

            Assert.Equal("Camaro2018_Chevrolet_pink\nblack_C300_Mercedes Benz\nC500_Mercedes Benz_red\nBMW_M5_red\nBMW_white_X6", factory.ListFlyweights());

            Assert.Equal(
                "Flyweight: Displaying shared {\"Owner\":null,\"Number\":null,\"Company\":\"BMW\",\"Model\":\"M5\",\"Color\":\"red\"} and unique {\"Owner\":\"James Doe\",\"Number\":\"CL234IR\",\"Company\":\"BMW\",\"Model\":\"M5\",\"Color\":\"red\"} state.",
                AddCarToPoliceDatabase(factory, new Car
            {
                Number  = "CL234IR",
                Owner   = "James Doe",
                Company = "BMW",
                Model   = "M5",
                Color   = "red"
            }));

            Assert.Equal(
                "Flyweight: Displaying shared {\"Owner\":null,\"Number\":null,\"Company\":\"BMW\",\"Model\":\"X1\",\"Color\":\"red\"} and unique {\"Owner\":\"James Doe\",\"Number\":\"CL234IR\",\"Company\":\"BMW\",\"Model\":\"X1\",\"Color\":\"red\"} state.",
                AddCarToPoliceDatabase(factory, new Car
            {
                Number  = "CL234IR",
                Owner   = "James Doe",
                Company = "BMW",
                Model   = "X1",
                Color   = "red"
            }));

            Assert.Equal("Camaro2018_Chevrolet_pink\nblack_C300_Mercedes Benz\nC500_Mercedes Benz_red\nBMW_M5_red\nBMW_white_X6\nBMW_red_X1", factory.ListFlyweights());
        }