Combinazione di pattern: Fluent Builder e Null Object Pattern

2

Attualmente sto lottando con un codice GUI in cui ho una tabella le cui righe corrispondono ad un oggetto, diciamo un oggetto Person. Quando la tabella viene inizializzata, riempie la tabella con gli oggetti Person di cui è a conoscenza - ad esempio Bob, Andy e Tom. Il resto degli elementi delle righe ( row.getItem() ) sono nulli. In questo particolare framework GUI, non è possibile evidenziare / selezionare le righe che sono getItem() restituisce null - ma nel mio caso d'uso particolare voglio consentire questa funzionalità.

Pertanto, dopo aver inizializzato la tabella, voglio impostare le righe dopo Bob, Andy e Tom su un oggetto Person che rappresenta una Persona vuota / nulla (non inizializzata di per sé), quindi il modello di oggetto nullo che entra in gioco. I pattern si combinano perché la classe Person utilizza il modello di build fluente per costruire istanze Person, quindi ho pensato di combinare i due in questo modo:

for (rows in table) {
    if (row.getItem() == null) {
        row.setItem( Person.PersonBuilder().nullObject().build() );
    }
}

Sto cercando feedback / consigli sui meriti di questa scelta, e sono benvenuto alle alternative se questo approccio è sbagliato.

    
posta brcolow 08.01.2015 - 00:49
fonte

1 risposta

2

Con il tuo approccio uno dei problemi sarà controllare se una riga contiene un oggetto nullo. Andrei con un oggetto costante come Person.NullObject (dove è un valore statico), con quell'unico vantaggio si potrebbe sempre controllare se la riga ha un valore controllando row.getItem == Person.NullObject ma se questo approccio è usato devi assicurati che i campi di Person.NullObject non vengano modificati dalla modifica sul posto.

    
risposta data 01.02.2015 - 06:02
fonte