Che cos'è SteppedPattern?

1

Ho letto questo articolo sul blog di Jon Skeet dove approfondisce l'argomento delle prestazioni sul pool di oggetti & sicurezza del filo.

Nell'articolo fa riferimento a SteppedPattern :

Most of our formatting goes through something called SteppedPattern – that’s basically one multicast delegate (with lots of actions) for formatting, and a list of delegates for parsing.

Dimostra il metodo di formattazione sopra indicato:

public string Format(TResult value)
{
    StringBuilder builder = new StringBuilder();
    // This will call all the actions in the multicast delegate.
    formatActions(value, builder);
    return builder.ToString();
}

Non ho mai sentito parlare del termine prima e non riesco a trovare alcuna informazione disponibile online per SteppedPattern (i più cercati mi hanno portato a Wikipedia Modello di progettazione software pagina)

Qualcuno ha più informazioni su SteppedPattern, in particolare:

  • come è definito e
  • dove verrebbe applicato ?
posta Moose 24.02.2015 - 07:19
fonte

1 risposta

3

È solo una classe all'interno di Noda Time . Non è un modello di design specifico che potrei nominare.

È usato per creare un pattern di analisi / formattazione del testo che consiste in un numero di passaggi. Quando formattiamo un valore, iniziamo fondamentalmente con un valore (ad esempio una data) e un StringBuilder vuoto, quindi applichiamo ogni fase a sua volta, fornendo ogni passo con il generatore corrente e la data. Quindi, ad esempio, per ottenere un valore di "2015-02-24" avresti modellato a step con cinque azioni di formato:

  • Aggiungi l'anno come valore a quattro cifre
  • Aggiungi il letterale '-'
  • Aggiungi il mese dell'anno come valore a due cifre
  • Aggiungi il letterale '-'
  • Aggiungi il giorno del mese come valore a due cifre

Il parser funziona nello stesso identico modo, ma inizia con un cursore sul valore di testo fornito (che ogni passo di analisi avanza) e un bucket per i passi di analisi per memorizzare i dati in (ad es. per prima cosa analizza l'anno e lo ricorda, quindi salta sopra il '-', ecc.). Infine, converte il bucket in LocalDate (o qualsiasi altra cosa).

Ho dei parser di pattern per convertire qualcosa come "yyyy-MM-dd" in un pattern a gradini (contenente sia azioni di analisi che di formattazione) - l'idea è di analizzare una volta lo specificatore di pattern e quindi riutilizzare le azioni di analisi / formato più volte in modo efficiente.

    
risposta data 24.02.2015 - 16:14
fonte

Leggi altre domande sui tag