Ho letto questo: link , che dice sì e questo: link , che dice no (" oggetti di valore non possono vivere da soli "). Quindi ho un semplice esempio:
Opzione 1
public class DenominationsRequired
{
public IEnumerable<System.Collections.Generic.KeyValuePair<decimal, int>> CalculateDenominations(decimal cost, ICurrency currency)
{
}
}
Opzione 2
Credo che sia simile al tipo di data in .NET, che ha metodi che restituiscono ogni volta una nuova data:
public sealed class DenominationsRequired
{
private readonly decimal _cost;
private readonly ICurrency _currency;
public DenominationsRequired(decimal cost, ICurrency currency)
{
_cost = cost;
_currency = currency;
}
public IEnumerable<System.Collections.Generic.KeyValuePair<decimal, int>> CalculateDenominations()
{
}
}
L'opzione 1 restituisce le denominazioni richieste per soddisfare un costo in un servizio di dominio e l'opzione 2 fa la stessa cosa di un oggetto valore. Ho pensato ai seguenti criteri per la scelta tra un servizio di dominio e un oggetto valore:
1) Se la classe viene chiamata una volta da un servizio applicativo, un servizio di dominio è appropriato.
2) Se la classe è usata da un'entità o da un altro oggetto valore, allora un oggetto valore è appropriato. Nota che il mio primo link qui sopra sembra contraddire questo.
3) Un'entità non è appropriata qui perché l'oggetto non ha identità e continuità. Credo che potrei creare un GUID e renderlo un'entità, tuttavia questa sembra una cattiva idea.
Credo che questo dovrebbe essere un servizio di dominio basato sulla mia analisi. Ho capito bene? Ci sono dei difetti nei criteri sopra?