ich einen Anwendungsfall, wo es drei Arten von DatenKlasse Level-Design für die Validierung Motor mit zwei unabhängigen Einheiten
- Business_Enrollment_Program sein (sie mit BEP_1, BEP_2 ... bezeichnen kann)
- Validation_Rule (lasst sie mit R1, R2 bezeichnen ...)
- Transaction_Type (bezeichnen wir sie TT_1, TT_2 ...). Dies ist eine Entitätsklasse mit einigen Attributen. Auf diesen Entitäten muss Validation_Rule ausgeführt werden.
TRANSACTION_TYPE Einheiten so etwas wie
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;
}
aussehen i2 Anforderung Jetzt haben während Validierungsregeln Ausführung:
Set von Validation_Rule
, die ausgeführt werden müssen, hängt von der TRANSACTION_TYPE und es ist Business_Enrollment_Program. Das bedeutet, dass wir für TT_1, die unter BEP_1 registriert sind, möglicherweise Regeln (R1, R2) ausführen müssen, aber für TT_1, die unter BEP_2 registriert sind, müssen wir möglicherweise (R1, R3) Regeln ausführen.Das Verhalten der Regel hängt von Transaction_Type und dessen Business_Enrollment_Program ab. Das bedeutet für TT_1 unter BEP_1 Verhalten der Regel R1 eingeschrieben könnte im Vergleich zu TT_1 unterschiedlich sein eingeschrieben unter BEP_2
Für Regeln i eine Struktur wie unten erstellen:
und ich kann die Regeln ausführen wie unten
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
}
}
Problem mit diesem Ansatz ist, ich bin nicht treffen meine zweite Anforderung, wo ich das Verhalten der Regel wollte TRANSACTION_TYPE abzuhängen und es ist Business_Enrollment_Progr bin.
Jede Idee, wie kann ich meine Klassen und Entitäten so arrangieren, dass beide Anforderungen elegant erfüllt werden?
Ihre 2 Anforderungen klingen gleich. Kannst du ein bisschen mehr von dem Bild zeigen? Ich sehe nicht, wo dieser zurückgegebene 'boolean' verwendet wird. – 4castle
@ 4castle In der ersten Anforderung möchte ich entscheiden, welche Regeln ausgeführt werden sollen. Aber im zweiten Anforderungsverhalten der gleichen Regel müssen variiert werden. Um die zweite Anforderung zu unterstützen, können Sie sich eine Regel validateTotalAmount vorstellen. Jetzt im Fall der Entität TT_1 in Bezug auf die BEP_1-Logik zur Validierung von totalAmount kann sich von der Entität TT_1 im Zusammenhang mit BEP_2 unterscheiden –
Ist es möglich, dass jede Transaktion in einem beliebigen Geschäftsprogramm ausgeführt wird? – 4castle