Quali sono i vantaggi di unire dinamicamente un metodo all'istanza della classe? [chiuso]

3

Mi sono imbattuto nel client API di Instagram scritto in Python.

Nella loro classe InstagramAPI , essi associare i metodi a una funzione in bind.py . Quando chiamato, la funzione restituisce un'istanza della classe InstagramAPIMethod ed esegue la richiesta di chiamata.

  1. Quali sono i vantaggi di farlo in questo modo? (creando direttamente istanze di InstagramAPIMethod in InstagramAPI )?
  2. Che cosa succederà se i metodi in InstagramAPI vengono chiamati più volte? Creerà una nuova istanza ogni chiamata?

Nota, gli unici vantaggi che ho pensato sono (probabilmente sono fuori pista):

  • La classe non / non dovrebbe preoccuparsi di quale sia la classe di implementazione.
  • Se non viene chiamato un metodo particolare, non creeremo mai un'istanza.
posta Pran 10.01.2014 - 13:08
fonte

3 risposte

0

Uno dei tag in questa domanda ti dà un'idea di quale potrebbe essere la risposta. Questo è un modello di progettazione comune, in particolare per i servizi e molto comune per i servizi Web.

Fondamentalmente, nascondono l'istanza del metodo InstagramAPIM e mantengono tutto in un unico punto. Ciò consente una flessibilità interna in modo che possano cambiare il modo in cui le cose funzionano sotto il cofano, assicurando che bind_method continui a funzionare allo stesso modo.

Inoltre, questo semplifica la modifica e l'aggiornamento a nuovi URL, nuovi metodi e così via. Questo è il motivo per cui viene utilizzato così ampiamente con i servizi Web: il costo degli aggiornamenti e delle modifiche è minimo.

    
risposta data 13.01.2014 - 20:23
fonte
0

Penso che in questo modo hai tutte le istanze di quella classe centralizzata in un solo posto (bind_method ()).

Quindi, se devi apportare modifiche al costruttore o alla firma del metodo _call o qualsiasi altra cosa devi modificare il codice in una sola posizione, altrimenti dovresti cercare di trovare ogni riga di codice in cui stai creando un'istanza di la classe e chiamando il metodo _call lo modifica. Spero che questo aiuti.

    
risposta data 10.01.2014 - 13:54
fonte
-2

Il vantaggio del collegamento dinamico è che possiamo dire al compilatore che qui esiste la possibilità di esistere più sottoclassi di questa classe e che il metodo può essere sovrascritto lì quindi ti preghiamo di lasciarlo per il futuro refrence, altrimenti il compilatore lo legherà alla chiamata corrente e il prossimo a cavalcare per questo metodo non produrrà il risultato desiderato.

    
risposta data 04.10.2015 - 17:12
fonte

Leggi altre domande sui tag