Nascondere l'astrazione tecnica di un oggetto dagli utenti senza bisogno di regole statiche

0

Sono proprietario di alcuni Prodotti, dove ho clienti diversi che usano quel prodotto, e gli attributi di quel prodotto alterano l'esperienza che i miei clienti hanno sulla mia pagina.

Per un esempio, diciamo che i client hanno una chiave chiamata "product1" e che produrrebbe un oggetto "Prodotto" con valori

Product: 
{
    "id": product1,
    "someCrazyTechincalAttribute": 12.50,
    "someOtherCrazyTechnicalAttribute: 100

}

Quindi abbiamo un'interfaccia utente Web che consentirà ai clienti di modificare il loro prodotto. Tuttavia, non vogliamo esporre i nostri clienti a tutti questi attributi perché non avrebbero alcun senso per loro. Inoltre, una combinazione di attributi tecnici può culminare in un'esperienza utente singola. Ad esempio, se un cliente desiderava che il suo prodotto avesse un colore rosso, entrambi questi attributi tecnici pazzi dovrebbero essere interessati. Vogliamo nascondere l'astrazione tecnica dei nostri clienti non esponendo i dettagli tecnici del nostro prodotto.

So che potremmo avere regole statiche nell'interfaccia utente che potrebbero fare la mappatura per noi. Tuttavia, non pensiamo che l'aggiunta di regole statiche consentirebbe ai proprietari di prodotti un tempo facile per aggiungere attributi.

Esiste un buon metodo di ingegneria del software per affrontare un problema come questo? Qualsiasi aiuto sarebbe molto apprezzato!

    
posta SnG 23.03.2017 - 01:37
fonte

2 risposte

1

Se capisco bene, la tua domanda riguarda la mappatura tra gli attributi tecnici negli oggetti del modello e gli attributi non tecnici nella vista dell'oggetto:

Quindi, invece di avere una mappatura diretta tra gli attributi nel modello e gli attributi nella vista, è possibile utilizzare un oggetto di mappatura sul lato client, che si occuperà di questa mappatura. La vista interagirebbe con l'oggetto di mappatura e quest'ultima interagirebbe con il controller, il presentatore e il modello.

Con una tale logica, puoi utilizzare le regole di mappatura dinamica:

  • mappatura controllata da tabella (ad esempio combinando attributi tecnici del prodotto con valori di tabella per ottenere gli attributi utente o viceversa.
  • mappatura basata su formule (ad esempio calcolo degli attributi utente dagli attributi del prodotto)
  • o mappatura basata su regole (ad esempio applicando una combinazione di regole di trasformazione).

Se utilizzi qualcos'altro oltre alla mappatura delle tabelle, utilizza un motore delle regole . Ciò dovrebbe essere meglio implementato in modalità OO dal lato server: è possibile implementare le regole come classi e derivare nuove classi se le regole sono complesse e richiedono la codifica.

    
risposta data 25.03.2017 - 16:30
fonte
0

Una singola funzione di interfaccia utente potrebbe richiedere più impostazioni di attributo diverse.

Mentre stai realizzando, vogliamo separare la funzionalità dall'implementazione.

Come per altri aspetti della codifica, vogliamo fornire un'astrazione pertinente al dominio la cui implementazione è incapsulata o nascosta.

Suggerirei di manifestare le astrazioni di feature appropriate che l'interfaccia utente può utilizzare per comunicare con il back-end e di mettere la mappatura delle funzionalità agli attributi interni nel back-end.

    
risposta data 24.03.2017 - 00:53
fonte

Leggi altre domande sui tag