我想知道如果你找到以下模式有意义的领域驱动的设计。

域层的模型和知识库。在应用层包括服务,处理的查询的用户接口,或从控制器,模型中的视器模式。

详细的结构:

// Assembly Model:
public class Phrase
{
    public int PhraseId { get;  set; }
    public string PhraseText { get;  set; }

    公众的短语(string phraseText){这一点。PhraseText=phraseText;}

 公共无效SetId(国内){这一点。内=内;}
}

// Assembly Repository (references assembly Model):
public interface IPhraseRepository
{
    Phrase SavePhrase(那句短语);
    短语GetPhrase(国内);
}

// Assembly Services (references assemblies Model and Repository):
public class PhraseService
{
    private IPhraseRepository _phraseRepository;
    public PhraseService(IPhraseRepository phraseRepository)
    {
        _phraseRepository = phraseRepository;
    }
    public Phrase SavePhrase(string phraseText)
    {
        Phrase phrase = _phraseRepository.SavePhrase(新短语(phraseText));
        // doing other things like sending mail, logging, etc.
        // ...
        return Phrase;
    }
}

特别是,它会做出有意义的举动的方法进入该短语的实体类?在这种情况下,怎么会叫?

编辑:

例如上文已经修改后的答案,从moffdub和评论从迪尔Ansari.更改 强调.

我想问一下有关加入IPhraseRepository.GetPhrase(内的)和如何将包括吗?

有帮助吗?

解决方案

储存库应采取一短语,不一串。我也不知道为什么SavePhrase方法返回的短语。我倾向于使这些方法无效的方法。

此外,警惕使每一个酒店在你领域模型有公共吸气,并制定者。这可能会导致你有贫血的领域模型。

其他提示

只是一些想法:

SetId(国内)不应该被公开

短语可能实现IPhrase(或IPhraseAggregate)这不会让SetId(..)

SavePhrase(短语句话)可能会(应该吗?) 回无效的,如果所参照的实体的短语保持"有效的"后节省:

public void SavePhrase(string phraseText)
{
    Phrase phrase = new Phrase(phraseText); // NOTE: keep a reference to phrase
    this._phraseRepository.SavePhrase(phrase); // NOTE: returns void

    return phrase; // NOTE: assume the repository sets the phrase.PhraseId
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top