Dove mettere la logica di business intermediario in un back-end

1

Considera che hai una GravityLogic e una WeakForceLogic class. Di per sé entrambi forniscono tonnellate di logica aziendale. Ora vuoi creare interazioni tra quelle che producono un insieme di risultati completamente diverso. Preferiresti creare la classe GravityWeakForceInteractionLogic se questo genererà molti nuovi algoritmi o metterà la nuova logica altrove (ad esempio le classi Helper)?

Sto faticando molto nell'organizzare un codice di logica commerciale di questo tipo sul lato backend. La gravità e la logica della forza debole sono solo esempi. Quello che sto cercando di evitare è di "collegare" la logica di business tra gli oggetti di back-end nei livelli superiori. Voglio anche fornire un'API più solida per il nostro frontend. Mi ritrovo sempre a chiedermi dove mettere questi algoritmi.

Questa domanda riguarda qualsiasi linguaggio orientato agli oggetti. So che ogni caso potrebbe richiedere il proprio posto, ma per ora, supponiamo che questa logica di collegamento sia complicata e gonfiasse le classi originali che sta cercando di connettere in qualche modo ed estrarre informazioni significative.

    
posta Kévin Isabelle 07.09.2018 - 19:03
fonte

1 risposta

2

Dato che il nostro dominio problematico sembra essere la fisica, farò alcune ipotesi nella mia risposta:

  1. GravityLogic contiene metodi che incapsulano algoritmi matematici per risolvere i problemi di gravità

  2. WeakForceLogic è una classe con algoritmi per la forza debole dalla fisica delle particelle.

Capire il dominio del problema è la chiave qui.

Se la logica richiede gravità e forza debole, dove va?

In che modo la forza di gravità e debole si relazionano tra loro in fisica? Questa è la domanda a cui rispondere. Quindi, i posti in cui mettere questa logica di coordinamento sarebbero:

  • L'interazione tra i due può avere un termine o un'idea in fisica, che diventa una nuova classe che esegue questi calcoli di coordinamento.

  • Esporre più metodi su GravityLogic o WeakForceLogic che accetta l'altra classe come argomento.

  • Una classe "use case" che gestisce le istanze di queste due classi per eseguire calcoli più grandi.

risposta data 07.09.2018 - 20:12
fonte