总之,我有一系列的域对象(项目是基于NHibernate的)。目前,根据“良好实践”,它们仅定义业务对象,包括域中每个对象功能特定的属性和方法。但是,其中一个对象需要发送SMTP消息。我在一个单独的'Utilities‘程序集中定义了一个简单的SMTP客户端类。为了在POCO中使用这个邮件客户端,我需要持有对域中实用程序程序集的引用。我的问题是...为了获得必要的业务功能,在POCO中持有这样的引用是否背离了最佳实践?
亲切的问候
保罗·J。
发布于 2010-03-19 18:52:30
针对抽象编写代码,并使用依赖注入以避免引用。
public class PocoObject{
public PocoObject(IMailSender mailSender){
_mailSender=mailSender;
}
public void DoStuff(){
mailSender.Send(to,content,blabla);
}
}但是邮件发送类不适合域。它看起来更像是应用程序服务。
发布于 2010-03-19 19:15:40
它是。发送SMTP消息听起来更像是业务规则,而不是业务对象责任。您的业务对象是POCO,在大多数情况下,它只隐含数据而不隐含任何行为。正如Arnis L.提到的,最好在您的系统中有一个管理消息发送作业的服务。
https://stackoverflow.com/questions/2476588
复制相似问题