È questo uno schema? Se sì, quale? (Contesti, richieste e risposte) [chiuso]

0

In gran parte del mio codice oggigiorno, mi sono adattato a un approccio che penso di leggere nel contesto di "Codice pulito". È stato qualche anno fa e non riesco più a trovare la fonte, quindi mi piacerebbe sapere qual è il nome di questo pattern (e se è persino un pattern).

L'approccio è così semplice, ma potente che sono sconcertato su quanto sia difficile trovare fonti su questo, ma potrebbe essere semplicemente la mancanza di parole di ricerca appropriate.

L'approccio è, al fine di scrivere codice unit-testabile, per disaccoppiare la funzione e la presentazione di un'applicazione (duh) in modo tale che le due parti comunichino effettivamente tramite un'interfaccia che descrivo sempre come "HTTP- come".

Cioè, le funzioni che il tuo codice può fare sono un progetto, e il display ecc. sono un altro progetto. L'unica comunicazione tra i due viene effettuata utilizzando Context classes, che accetta un Request e restituiscono un Response per qualsiasi cosa il tuo codice possa fare.

Quindi, ad es. se il tuo codice traduce una frase, avresti un TranslationContext , insieme a TranslationRequest (che ha una proprietà text ) e TranslationResponse (con una proprietà text che include il testo tradotto).

La classe Context è l'unica interfaccia dal tuo codice applicazione reale al "fuori", mentre la "vista" è vista anche come esterna.

Dal lato della presentazione, si chiama

TranslationContext ctx = new TranslationContext(interfacedDbOrTextfile);
TranslationRequest req = new TranslationRequest("hallo welt");
TranslationResponse resp = ctx.Process(req);
Console.Write(resp.Text); // "hello world"

Inoltre, tutte le origini dati (DB, file di testo, ecc.) devono essere interfacciate e disaccoppiate quando passate al core, quindi puoi sempre sostituirle con cose UnitTestable come le stringhe in memoria invece dei file di testo o degli arraylisti invece delle righe del database .

È quello che sto descrivendo solo l'applicazione di modelli noti in un modo che non riesco a vedere? O è un modello che non è stato ancora descritto? Oppure sto usando parole diverse per cose che esistono già?

    
posta Florian Peschka 16.12.2014 - 09:01
fonte

1 risposta

4

Il Oggetto contesto è un pattern utilizzato in un numero di punti, incluso J2EE, ASP.NET MVC ed Entity Framework. Viene utilizzato "per incapsulare lo stato in un modo indipendente dal protocollo per essere condiviso nell'intera applicazione."

L'oggetto contesto è un modello controverso. Anche se può essere pensato come un mezzo di Inversion of Control o Dependency Injection, è davvero più come un modo conveniente per passare l'ambiente di lavoro (simile a un "oggetto dio"). Gli oggetti di contesto possono essere difficili da deridere, quindi testabilità del codice che li utilizza ha un impatto negativo.

Ulteriori letture
Oggetto contesto
Passare attorno agli oggetti di contesto ginormous
Mocking HttpContext

Le richieste e le risposte sono solo un passaggio di messaggi.

    
risposta data 16.12.2014 - 17:31
fonte

Leggi altre domande sui tag