【问题标题】:Why should BLL layer use method overloads instead of separate methods with individual names...shouldn't it be the other way around?为什么 BLL 层应该使用方法重载而不是具有单独名称的单独方法……不应该反过来吗?
【发布时间】:2009-09-30 18:57:01
【问题描述】:


我不明白为什么使用方法重载(在 BLL 层)优于使用具有单独名称的单独方法。

例如,如果我们的 Web 应用在 DAL 层有 GetAllArticles、GetArticlesByCategory、GetPublishedArticles 和 GetPublishedArticlesByCategory 方法用于从数据库中检索文章,那么建议在 BLL 层使用 GetArticles () 重载以调用所有上述 DAL 方法。

a) 但是为什么使用 GetArticles 重载优于使用(在 BLL 层)GetAllArticles、GetArticlesByCategory、GetPublishedArticles 和 GetPublishedArticlesByCategory 方法(这些方法会调用 DAL 的 GetAllArticles、GetArticlesByCategory、GetPublishedArticles 和 GetPublishedArticlesByCategory)?


也就是说,我意识到业务对象旨在抽象数据库模式并使它们更易于人类理解。但就我而言,如果我是 UI 开发人员,如果 BLL 层有方法 GetAllArticles、GetArticlesByCategory、GetPublishedArticles 和 GetPublishedArticlesByCategory,而不是 BLL 有 GetArticles,对我来说会容易得多 重载,因为只需查看方法的名称,我就可以确切地知道它的作用!因此,具有单个名称的方法不是比重载更接近人类的思维方式吗?这正是 DLL 应该提供的


b) GetArticles 重载是否应该比 GetAllArticles、GetArticlesByCategory、GetPublishedArticles 和 GetPublishedArticlesByCategory 更直观?!


感谢

【问题讨论】:

  • 谁推荐这个?就我个人而言,我会采用另一种方式——使用 BLL 中的详细名称和 DAL 中的重载。
  • 在此链接上回复的人说:stackoverflow.com/questions/1488772/… ...但我不是 100% 确定,因为我对“在BLL”……换句话说,我不知道那是什么意思。另外,我正在读一本书“网站编程 - 问题、设计和解决方案”,作者在 BLL 层使用了重载,在 DAL 中使用了详细名称

标签: asp.net design-patterns webforms


【解决方案1】:

无论哪种方式都很好,并且取决于该层的消费者。
您可以在两个图层上选择重载或单独的名称。这完全取决于观众/用户。
如果您的层是作为单独的项目开发的,并且将生成单独的 DLL,并且这些 DLL 可能会在不同的地方使用,那么这个选择就变得更加重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2019-08-22
    相关资源
    最近更新 更多