Sto provando a pensare a uno scenario quando avrei tre diverse forme di NSData (o qualsiasi altra cosa) da inviare a tre diversi servizi come Evernote, Google Drive, Dropbox. Certo, ognuno di questi ha i propri SDK da impacchettare nell'app per iOS e questo va bene.
Ora, voglio creare una singola classe che serializzi sia i dati di invio che quelli di ricezione da e verso i servizi di cui sopra.
La mia mente mi sta portando a singleton
, una classe condivisa con NSOperationQueue
alla sua base.
aggiungere periodicamente {send:"this data" to:dropbox}
a NSOperationBlock
e aggiungerlo a singleton
.
In qualsiasi momento, le seguenti operazioni potrebbero rientrare nel singleton
di NSOperationQueue
.
-
{send:"this data" to:dropbox}
-
{send:"this number" to:evernote}
-
{send:"this dude" to:googledrive}
Il singleton
dovrebbe gestire la raggiungibilità di Internet, le sessioni di app ecc. Questa classe verrebbe collegata a Dropbox , Evernote e GDrive e i rispettivi bundle SDK. Quindi, in realtà, l'unica cosa che questa classe dovrebbe fare è consegnare i dati ai rispettivi SDK per gestirli da soli (è come dire, gestirli e farmi sapere se è stato un successo o fallito).
Mi piacerebbe molto ricevere suggerimenti / critiche sull'approccio che sto prendendo. Ho poca esperienza con NSOperationQueue
, non so se sto facendo le scelte giuste qui. Alcuni indizi su un buon pattern API sarebbero davvero utili.
UPDATE
È stato suggerito di creare un wrapper per ogni servizio. Ma se posso sottolineare che c'è poco da fare in una classe Dropbox Wrapper
, poiché in iOS tutto viene gestito nel proprio SDK. Ad esempio, Evernote estende solo un semplice [ENSession .. uploadNote..]
. Tutto quello che volevo fare è serializzare i miei caricamenti in un'unica coda globale e poi inviare i singoli metodi a Dropbox
o Evernote
o ovunque. Se supponiamo che esista un servizio che richiede una qualche forma di gestione dei dati, allora utilizzerei un wrapper e invierò il suo thread. Aggiungerò anche questo alla domanda. È la serializzazione e amp; accodamento voglio.Sounds ragionevole?