Il modello di osservatore è definito dalla "Banda di quattro" Design Patterns book come" dipendenza uno-a-molti tra oggetti in modo che quando un oggetto cambia stato, tutti i suoi dipendenti vengono avvisati e aggiornati automaticamente ".
DiconoanchecheilpatternObserverdovrebbeessereusatoinunaqualsiasidelleseguentisituazioni:
Whenanabstractionhastwoaspects,onedependentontheother.Encapsulatingtheseaspectsinseparateobjectsletsyouvaryandreusethemindependently.
Whenachangetooneobjectrequireschangingothers,andyoudon'tknowhowmanyobjectsneedtobechanged.
Whenanobjectshouldbeabletonotifyotherobjectswithoutmakingassumptionsaboutwhotheseobjectsare.Inotherwords,youdon'twanttheseobjectstightlycoupled.
SuAdamStroud
Cursor.registerContentObserver()
Cursor.unregisterContentObserver()
Cursor.setNotificationUri()
Allo stesso modo, usando un ContentProvider, possiamo usare un oggetto client ContentResolver per accedere ai dati dal Content Provider e quindi registrare un ContentObserver per ascoltare la modifica dei dati dietro l'URI per cui è stato registrato l'osservatore.
Quindi, come oggetto Subject nel pattern Observer, ContentResolver ha i metodi che, a mio avviso, sono quasi gli stessi:
registerContentObserver() of ContentResolver is Attach() from Subject
unregisterContentObserver() of ContentResolver is Dettach() from Subject
notifyChange() of ContentResolver is Notify() from Subject
Quindi, la mia domanda è, se i tre componenti di ContentProvider (ContentProvider, ContentResolver e ContentObserver) sono di per sé un'implementazione del pattern Observer?