j'ai un cas d'utilisation où il y aura trois types de donnéeslevel design de classe pour le moteur de validation avec 2 entités indépendantes
- Business_Enrollment_Program (permet de les représenter avec BEP_1, BEP_2 ...)
- Validation_Rule (permet de les noter avec R1, R2 ...)
- Transaction_Type (notons-les TT_1, TT_2 ...). C'est une classe d'entité ayant des attributs. Sur ces entités, Validation_Rule doit être exécutée.
entités TRANSACTION_TYPE ressemblera à quelque chose comme
public TT_1 {
private Business_Enrollment_Program;
private COMMON_FIELD_1;
private COMMON_FIELD_2;
private TT_1_SPECIFIC_FIELD;
}
public TT_2 {
private Business_Enrollment_Program;
private COMMON_FIELD_1;
private COMMON_FIELD_2;
private TT_2_SPECIFIC_FIELD;
}
Maintenant, j'ai 2 exigence lors de l'exécution des règles de validation:
Jeu de Validation_Rule qui doivent être exécutés dépend de la TRANSACTION_TYPE et il est Business_Enrollment_Program. Cela signifie que pour TT_1 inscrit sous BEP_1, nous pourrions avoir besoin d'exécuter des règles (R1, R2), mais pour TT_1 inscrit sous BEP_2, nous pourrions avoir besoin d'exécuter des règles (R1, R3).
Le comportement de la règle dépend de Transaction_Type et de Business_Enrollment_Program. Cela signifie que pour TT_1 inscrit dans le comportement BEP_1 de la règle R1 peut être différent par rapport à TT_1 inscrit sous BEP_2
Pour connaître les règles que je peux créer une structure comme ci-dessous:
Et je peux exécuter les règles comme ci-dessous
public processTransaction(T transactioType) {
private boolean result = true;
if(t instanceof TT_1) {
result = result && R1_For_TT_1.execute(t);
}
else if (t instanceof TT_2) {
result = result && R1_For_TT_1.execute(t);
result = result && R2_For_TT_1.execute(t);
}
if(result) {
// Do something
}
else {
// Do something else
}
}
problème avec cette approche est que je ne suis pas rencontrer mon 2ème exigence où je voulais le comportement de la règle à dépendre TRANSACTION_TYPE et il est Business_Enrollment_Progr un m.
Une idée comment puis-je organiser mes classes et entités afin que mes deux exigences soient remplies avec élégance?
Vos 2 exigences sont les mêmes. Pouvez-vous montrer un peu plus de l'image? Je ne vois pas où ce retourné 'boolean' est utilisé. – 4castle
@ 4castle Dans la première exigence, je veux décider quelles règles doivent être exécutées. Mais en deuxième exigence, le comportement de la même règle doit être modifié. Pour prendre en charge la deuxième exigence, vous pouvez penser à une règle validateTotalAmount. Maintenant, dans le cas d'une entité TT_1 liée à BEP_1 logique pour valider, totalAmount peut être différent de l'entité TT_1 associée à BEP_2 –
Est-il possible que n'importe quel type de transaction soit exécuté sur un programme métier? – 4castle