首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POCO最佳实践

POCO最佳实践
EN

Stack Overflow用户
提问于 2010-03-19 18:50:06
回答 2查看 829关注 0票数 0

总之,我有一系列的域对象(项目是基于NHibernate的)。目前,根据“良好实践”,它们仅定义业务对象,包括域中每个对象功能特定的属性和方法。但是,其中一个对象需要发送SMTP消息。我在一个单独的'Utilities‘程序集中定义了一个简单的SMTP客户端类。为了在POCO中使用这个邮件客户端,我需要持有对域中实用程序程序集的引用。我的问题是...为了获得必要的业务功能,在POCO中持有这样的引用是否背离了最佳实践?

亲切的问候

保罗·J。

EN

回答 2

Stack Overflow用户

发布于 2010-03-19 18:52:30

针对抽象编写代码,并使用依赖注入以避免引用。

代码语言:javascript
复制
public class PocoObject{
    public PocoObject(IMailSender mailSender){
      _mailSender=mailSender;          
    }

    public void DoStuff(){
      mailSender.Send(to,content,blabla);
    }
}

但是邮件发送类不适合域。它看起来更像是应用程序服务。

票数 0
EN

Stack Overflow用户

发布于 2010-03-19 19:15:40

它是。发送SMTP消息听起来更像是业务规则,而不是业务对象责任。您的业务对象是POCO,在大多数情况下,它只隐含数据而不隐含任何行为。正如Arnis L.提到的,最好在您的系统中有一个管理消息发送作业的服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2476588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档