Qual è il metodo per restituire l'istanza stessa con la configurazione appena aggiunta che consente il concatenamento? [duplicare]

1

Ad esempio, con i dati di Spark SQL DataFrameReader , puoi invocare qualcosa come sqlContext.read().schema(customSchema).json(path) dove schema function restituisce DataFrameReader stessa con la configurazione aggiunta di customSchema . Allo stesso modo, ObjectWriter di Jackson ha with funzione che restituisce ObjectWriter stessa con alcune configurazioni personalizzate passate attraverso la funzione with .

In primo luogo, sono curioso di sapere se questo modo di configurare attraverso il metodo di concatenamento ha il suo nome, così posso cercare ulteriormente

In secondo luogo, questo tipo di metodo sarebbe adatto per una classe di convertitore di formati di dati in cui HTML, JSON e CSV saranno convertiti l'uno con l'altro? Quello che sto immaginando è avere una classe Converter statica che ha metodi from e to , dove si specifica l'input e il suo tipo dataformat e l'output e il suo tipo dataformat. Quindi, sembrerebbe qualcosa come Converter.from("inputPath", DataFormat.CSV).to("outputPath", DataFormat.JSON") e il blackbox dovrebbe gestire il processo. Il motivo principale per cui ho voluto provare questo è che adesso ho un metodo per ogni conversione, come FromCSVToJSON , ma non pensavo che fosse abbastanza pulito. Ogni suggerimento di design alternativo per la classe Converter è il benvenuto.

    
posta THIS USER NEEDS HELP 13.03.2017 - 21:40
fonte

2 risposte

1

Vedi " Fluent Interface ". Personalmente mi piacciono i metodi fluenti da () e a (): è comodo ed estetico.

    
risposta data 13.03.2017 - 22:19
fonte
0

In Java è noto come Fluent Interface . È stato reso popolare da Martin Fowler, tuttavia l'idea è in realtà molto più antica. Esisteva come metodo a cascata in C e Smalltalk ed è una capacità intrinseca dei linguaggi funzionali.

Un'interfaccia fluente sarebbe utile per ciò che proponesti, ma tieni presente che è un contratto o un'interfaccia, non un'implementazione. Delega l'implementazione del comportamento per mantenere il principio di responsabilità unica.

    
risposta data 13.03.2017 - 22:30
fonte

Leggi altre domande sui tag