هل هذا الكيان مستودع الخدمة سبيل المثال تناسب المجال يحركها التصميم ؟

StackOverflow https://stackoverflow.com/questions/452517

سؤال

أود أن أعرف ما إذا كان يمكنك العثور على النمط التالي مجدية في المجال يحركها التصميم.

المجال تتكون طبقة من نموذج المخزون.تطبيق طبقة تتكون من الخدمات التي تتعامل مع الاستفسارات من واجهة المستخدم ، أو من تحكم في نموذج التحكم بعرض نمط.

تفاصيل هيكل:

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

    العامة العبارة(سلسلة phraseText) { this.PhraseText = phraseText;}

 الفراغ العام SetId(الباحث phraseId) { this.PhraseId = phraseId;}
}

// Assembly Repository (references assembly Model):
public interface IPhraseRepository
{
    Phrase SavePhrase(العبارة العبارة);
    العبارة In(الباحث phraseId);
}

// 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 و التعليق من عديل الأنصاري.التغييرات أبرز.

أود أن أسأل عن إضافة IPhraseRepository.In(phraseId) وكيف أن يشمل ذلك ؟

هل كانت مفيدة؟

المحلول

مستودع يجب أن تأخذ في عبارة لا سلسلة.أنا لست متأكدا لماذا SavePhrase الأسلوب بإرجاع العبارة.أنا أميل إلى جعل مثل هذه الأساليب الفراغ الأساليب.

أيضا كن حذرا من جعل كل الممتلكات في المجال الخاص بك نموذج عامة حاصل على واضعي.التي يمكن أن تؤدي إلى فقر الدم نموذج المجال.

نصائح أخرى

فقط بعض الأفكار:

SetId(الباحث phraseId) لا ينبغي العامة

العبارة يمكن أن تنفذ 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