2010-03-19 56 views
0

所有,我有一系列的域对象(项目是基于NHibernate的)。目前按照“良好做法”,它们仅定义业务对象,包括特定于域内每个对象功能的属性和方法。但是,其中一个对象需要发送SMTP邮件。我在一个单独的“实用程序”程序集中定义了一个简单的SMTP客户端类。为了在POCO中使用这个邮件客户端,我需要持有对该域中的实用程序集的引用。我的问题是......这是否违背了在POCO中持有这种参考的最佳做法,以获得必要的业务功能。POCO最佳实践

此致

保罗J.

回答

0

针对抽象代码和使用依赖注入,以避免参考。

public class PocoObject{ 
    public PocoObject(IMailSender mailSender){ 
     _mailSender=mailSender;   
    } 

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

但邮件发送类型不适合域。这似乎更像是应用程序服务。

0

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

+0

这取决于我们试图遵循什么样的架构。域驱动设计专门用于将业务逻辑放入业务对象中。 – 2010-03-22 08:32:14