Se ho bisogno di una connessione per ottenere i dati, quindi visualizzare i dati sul controller A, dovrei "Connetti a controller A" o "A controller A-Connect"?

0

Ad esempio, supponiamo di avere un'app di shopping, che ha una pagina di informazioni utente per mostrare le informazioni utente:

class UserInfoController{
    toPurchaseRecord(){
    }
}

e una pagina dei record acquisti per mostrare il record acquisti, che può essere raggiunto dalle informazioni utente:

class PurchaseRecordController{
}

ma il problema è che ho bisogno di ottenere dati da internet e quindi mostrare i dati usando PurchaseRecordController. La mia domanda è, dovrei:

1.start connection at UserInfoController:

class UserInfoController{
    toPurchaseRecord(){
          new HttpConnection("(url)",function(result){
              new PurchaseRecordController();
          });
      }
    }
}

class PurchaseRecordController{
    constructor(result){
        //show data according to result
    }
}

2.start connessione in PurchaseRecordController

class UserInfoController{
    toPurchaseRecord(){
          new PurchaseRecordController();
      }
    }
}

class PurchaseRecordController{
    constructor(result){
        new HttpConnection("(url)",function(result){
            //show data according to result
        }.bind(this));
    }
}

quale dovrei usare?

    
posta mmmaaa 14.09.2018 - 04:46
fonte

1 risposta

1

Suggerisco il primo approccio perché:

  • Il costruttore non è un buon posto per accedere a una rete Internet lenta. I programmatori in genere si aspettano che un costruttore venga restituito virtualmente all'istante. Cosa succede se la connessione Internet non funziona, come hai intenzione di segnalare gli errori agli utenti in un costruttore? Nel tuo primo approccio, potresti facilmente mostrare una finestra popup se la connessione Internet non funziona.
  • Continua dal punto precedente. UserInfoController ha una vista, giusto? Quindi potresti mostrare una barra di avanzamento del download, rendere la tua app più scura durante il download ecc. Ecc. Non puoi farlo in un costruttore !!
  • Nel tuo secondo approccio, sarebbe più difficile prendere in giro e testare unitamente il tuo PurchaseRecordController . Tuttavia, se il controllore accetta gli oggetti recuperati (ad es. JSON), puoi facilmente applicare il test dell'unità su di essi.
  • Non assegnare troppa responsabilità a PurchaseRecordController . Rendilo semplice. Dovrebbe solo trasformare i dati grezzi di Internet in un formato che l'utente è felice di vedere.
risposta data 14.09.2018 - 05:10
fonte

Leggi altre domande sui tag