Esistono delegati e delegazioni per consentire il passaggio di messaggi specifici a un osservatore, indipendentemente dal tipo di tale osservatore. In un'architettura di tipo coordinatore, in cui i coordinatori gestiscono e gestiscono il flusso di un'applicazione (invece di dire il livello dell'interfaccia utente, iOS e UIKit), la delega funge da principale mezzo di comunicazione tra i coordinatori figlio ei loro genitori. Il problema è che queste chiamate delegate sono in genere piuttosto specifiche dell'applicazione in questione.
Un esempio tipico potrebbe essere:
protocol AuthenticationCoordinatorDelegate {
func coordinatorDidPressLoginButton()
func coordinatorDidPresentAuthenticationPage()
}
Questo protocollo si applica solo al coordinatore dell'autenticazione e viene sempre implementato dal suo proprietario. È un caso d'uso molto specifico usato in un posto e perché ogni altro coordinatore ha bisogno di un modo per comunicare, l'esecuzione di un piano di lavoro dilagante. Più un'applicazione cresce, più i coordinatori esisteranno e più interfacce di delega una tantum dovranno essere create, tutte non generiche.
Quali sono alcune possibili alternative al modello di delega che consente il passaggio di messaggi ciechi tra i componenti? Un pensiero che avevo era un'architettura in stile Redux dove invece di informare un delegato qualcosa è successo, un'azione viene inviata a un negozio centrale e il coordinatore genitore reagisce in modo appropriato. Esistono, naturalmente, gravi limitazioni a questo schema, come il modo in cui modellare azioni come premere un pulsante nell'albero dello stato e come mantenere tale albero di stato (in particolare sul cellulare).
Qualcuno ha suggerimenti o idee?