Beispiel #1
0
        public void DoTheWork()
        {
            var productList = new List <IProduct>
            {
                new Product("red", "1"),
                new Product("blue", "1"),
                new Product("white", "1"),
                new Product("red", "2"),
                new Product("viola", "3"),
                new Product("black", "3"),
                new Product("red", "4"),
                new Product("brown", "4")
            };

            var filter = new ProductFilter();

            var filterByClor  = filter.Apply(productList, new ColorSpecification("red"));
            var filterdBySize = filter.Apply(productList, new SizeSpecification("2"));
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            var apple = new Product("Apple", Color.Green, Size.Small);
            var tree  = new Product("Tree", Color.Green, Size.Large);
            var house = new Product("House", Color.Blue, Size.Large);

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

            var pf = new ProductFilter();

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

            // ^^ BEFORE

            // vv AFTER
            var bf = new BetterFilter();

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

            Console.WriteLine("Large products");
            foreach (var p in bf.Filter(products, new SizeSpecification(Size.Large)))
            {
                Console.WriteLine($" - {p.Name} is large");
            }

            Console.WriteLine("Large blue items");
            foreach (var p in bf.Filter(products,
                                        new AndSpecification <Product>(new ColorSpecification(Color.Blue), new SizeSpecification(Size.Large)))
                     )
            {
                Console.WriteLine($" - {p.Name} is big and blue");
            }
        }
        static void Main(string[] args)
        {
            Product[] products = new Product[]
            {
                new Product("Apple", Color.Green, Size.Small),
                new Product("Tree", Color.Green, Size.Huge),
                new Product("House", Color.Blue, Size.Huge)
            };

            var pf = new ProductFilter();

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

            var bf = new BetterFilter();

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

            var bf2 = new BetterFilter();

            foreach (var p in bf2.Filter(products,
                                         new AndSpecification <Product>(new ColorSpecificaiton(Color.Green), new SizeSpecification(Size.Huge))))
            {
                Console.WriteLine($" - {p.Name} is green and huge");
            }


            Console.ReadKey();

            // Go to http://aka.ms/dotnet-get-started-console to continue learning how to build a console app!
        }
Beispiel #4
0
        /// <summary>
        /// "Software entities (classes, modules, functions, etc.)
        /// should be open for extension, but closed for modification"
        ///
        /// Extend ProductFilter without changing it by using inheritance.
        /// </summary>
        static void Main(string[] args)
        {
            var apple = new Product("Apple", Color.Green, Size.Small);
            var tree  = new Product("Tree", Color.Green, Size.Large);
            var house = new Product("House", Color.Blue, Size.Large);

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

            var productFilter = new ProductFilter();

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

            Console.WriteLine("Large blue items:");
            foreach (var product in productFilter.Filter(products,
                                                         new AndSpecification <Product>(
                                                             new ColorSpecification(Color.Blue), new SizeSpecification(Size.Large))))
            {
                Console.WriteLine($" - {product.Name} is blue and large");
            }
        }