コード例 #1
0
        static void Main(string[] args)
        {
            var apple = new Product("Apple", Color.Green, Size.Small); // creating new product 💫

            var tree = new Product("Tree", Color.Green, Size.Large);

            var house = new Product("House", Color.Blue, Size.Huge);

            Product[] products = { apple, tree, house };

            var productFilter = new ProductFilter();

            Console.WriteLine($"Green products (old): ");

            foreach (var p in productFilter.FilterByColor(products, Color.Green))
            {
                Console.WriteLine($" - {p.Name} is green.");
            }

            // now using better filter
            var betterFilter = new BetterFilter();

            Console.WriteLine("Green products (new): ");
            foreach (var p in betterFilter.Filter(products, new ColorSpecification(Color.Green)))
            {
                Console.WriteLine($" - {p.Name} is green.");
            }

            Console.WriteLine("Large Blue Items : ");
            foreach (var p in betterFilter.Filter(products,
                                                  new AddSpecification <Product>(new ColorSpecification(Color.Blue), new SizeFilter(Size.Huge))))
            {
                Console.WriteLine($" - {p.Name} is big & blue.");
            }

            Console.ReadKey();
        }