public IEnumerable <Product> Filter(IEnumerable <Product> products, IProductSpecification specification) { foreach (var item in products) { if (specification.isSatisfied(item)) { yield return(item); } } }
public Products Filter(IProductSpecification specification) { var result = new Products(); foreach (var item in list) { var product = (Product)item; if (specification.SatisfiedBy(product)) { result.Add(product); } } return(result); }
public AndSpecification(IProductSpecification spec1, IProductSpecification spec2) { this.spec1 = spec1; this.spec2 = spec2; }