1

我有一堆 Web API 控制器,通常看起来像这个例子:

  public class ProductsController : ApiController
    {
       private readonly context db = new context();
        public Product GetProductById(int id)
        {
            var product = db.products.FirstOrDefault((p) => p.Id == id);
            var category = db.category.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            if (category == someCategory)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest,new HttpError( "Custom Message"));
            }
            if (itsrainingToday == SomeOtherSpaghettiCode)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest, new HttpError("Some other mess"));
            }
           //and so on and so forth
            return product;
        }
    }

正如你所看到的,这是一个非常丑陋的烂摊子,尤其是。如果您有数百条规则和数十个控制器。什么是一种有效的方法来分解这些“业务规则”,以便它们可以应用于具有覆盖的多个控制器?我正在寻找基于此通用代码的良好设计模式和示例。

我了解工作单元、Unity 和其他方法。只需要一些关于遵循哪条路径的指导。

4

1 回答 1

1

看看规范模式。您可以在每个规范中放置一个规则,例如 NotNullProductRule,并将控制器中所需的规范链接在一起。

于 2013-09-24T19:08:45.797 回答