Come si chiama questo modello?

1

Esiste un nome per questo modello in cui un'API offre diverse varianti di un metodo (diverso nel numero di parametri) e internamente li inoltra con parametri predefiniti come questo:

public void doSomething(Object one) {
    doSomething(one, null);
}

public void doSomething(Object one, Object two) {
    doSomething(one, two, null);
}

public void doSomething(Object one, Object two, Object three) {
        // real implementation here
}
    
posta asco 02.11.2015 - 18:16
fonte

3 risposte

4

Se la delega (e i parametri predefiniti compilati) fanno parte del contratto della funzione, ad esempio, se DocString dice

doSomething(one, two) is equivalent to doSomething(one, two, null).

quindi mi riferisco a questi come overload di convenienza o metodi di convenienza in quanto semplicemente salvano l'utente digitandolo ma non fanno nulla che l'utente non avrebbe potuto fare altrimenti .

Se il fatto che la funzione semplicemente deleghi non è reso pubblico, allora è solo un dettaglio di implementazione arbitraria e probabilmente non merita un nome speciale.

Ho scelto questo termine dalla documentazione ufficiale di Java dove è usato abbastanza spesso.

Un idioma correlato è di avere una serie di sovraccarichi per qualche public metodo doSomething che non fa altro che determinare alcuni parametri per poi delegare a un private metodo doSomethingImpl . Questo è qualcosa di diverso in quanto l'utente non è a conoscenza dell'esistenza del metodo doSomethingImpl (e non potrebbe chiamarlo). Ho sentito che il doSomethingImpl viene definito "metodo operaio" o "cavallo di battaglia", ma quelli sono probabilmente termini molto colloquiali.

    
risposta data 03.11.2015 - 00:19
fonte
4

Come detto i metodi con diversi elenchi di parametri sono semplici sovraccarichi.

Il fatto che si chiamino l'un l'altro è semplicemente un refactoring per ridurre la duplicazione nel codice. Potresti copiare e incollare il real implementation in ogni corpo del metodo, ma ciò creerebbe problemi quando il codice comune cambiava (dovresti aggiornare il codice in ogni metodo), quindi avere i metodi chiamarsi a vicenda è un ovvio refattore.

In C# 4.0 e dopo puoi usare i parametri opzionali per fare lo stesso

public void doSomething(Object one, Object two = null, Object three = null) 
{
        // real implementation here
}
    
risposta data 02.11.2015 - 18:34
fonte
4

È un uso di overloading

In some programming languages, function overloading or method overloading is the ability to create multiple methods of the same name with different implementations. Calls to an overloaded function will run a specific implementation of that function appropriate to the context of the call, allowing one function call to perform different tasks depending on context.

Se stai chiedendo di questo specifico caso d'uso, allora non conosco un termine particolare, sebbene possa essere usato come un sostituto per i parametri facoltativi.

    
risposta data 02.11.2015 - 18:19
fonte

Leggi altre domande sui tag