Pattern di specifica parzialmente soddisfatto

1

Abbiamo un modello (IPayableModel) con una proprietà booleana che indica che un utente può o meno pagare per l'articolo. Una serie di specifiche che definiscono criteri che squalificheranno il modello dal pagamento sono raggruppate in una specifica composita e applicate a ciascun modello nell'elenco. Se una delle specifiche è soddisfatta dal modello, l'azione di pagamento non è disponibile.

La nostra sfida ora è che dobbiamo catturare le specifiche che hanno causato l'errore in modo da poter presentare un particolare messaggio all'utente.

Un esempio semplicistico: se il modello ha la proprietà CanPay impostata su false perché la specifica composita ha determinato che non ci sono soldi dovuti al modello, dovremmo dire all'utente che non possono pagare perché non c'è equilibrio.

Nell'articolo di Fowler sul modello delle specifiche ( link ), egli cita (pagina 17) il concetto di una "Specifica parzialmente soddisfatta", che implementa una proprietà restanteUnsatisfiedBy. Questo sembra dannatamente vicino a quello che sto cercando, ma non sono certo capisco il suo intento. Direi che potrebbe sembrare qualcosa del genere (almeno per il nostro caso d'uso):

public class PartiallyFulfilledCompositeSpecification<T> : CompositeSpecification<T>
{
    public ISpecification<T> RemainderUnfilledBy { get; }
}

Quale (nel nostro caso) dovrebbe contenere il tipo di ISpecification che è stato soddisfatto dal modello (ad esempio ZeroBalanceSpecification).

Non penso che questo sia esattamente l'uso previsto di Fowler, però, e non voglio confondere i futuri manutentori deviando troppo da uno schema specifico.

Esiste un modo migliore (leggi: stabilito / comune) per informare il cliente di una specifica Composite che le specifiche individuali erano soddisfatte o non soddisfatte dal modello fornito?

    
posta Pete Scott 18.04.2015 - 05:38
fonte

0 risposte

Leggi altre domande sui tag