Store as Application Facade
Ein Store, der nur Daten hält und CRUD-Operationen anbietet, ist ein Cache. Ein Store, der Applikationslogik orchestriert und Zustandsübergänge kapselt, ist eine Applikationsfassade.
Der Unterschied
Abschnitt betitelt „Der Unterschied“| Cache-Store | Application-Facade-Store |
|---|---|
setTasks(tasks) | loadTasksForProject(projectId) |
setLoading(true) | Intern verwaltet |
| Komponente ruft HTTP direkt | Store koordiniert alles |
Mit NgRx Signal Store
Abschnitt betitelt „Mit NgRx Signal Store“export const TasksStore = signalStore( withState<TasksState>({ tasks: [], status: 'idle' }), withMethods((store) => ({ async loadForProject(projectId: string) { patchState(store, { status: 'loading' }); try { const tasks = await inject(TasksService).getByProject(projectId); patchState(store, { tasks, status: 'success' }); } catch (e) { patchState(store, { status: 'error' }); } }, })),);Was die Facade kapselt
Abschnitt betitelt „Was die Facade kapselt“- Alle asynchronen Operationen (API-Calls, Subscriptions)
- Alle Zustandsübergänge (loading → success → error)
- Alle Command-Aggregationen (mehrere API-Calls für einen Use-Case)
- Alle Error-Handling-Strategien
Was Komponenten davon mitbekommen
Abschnitt betitelt „Was Komponenten davon mitbekommen“Nur Signals. Nur fertig gemappte ViewModels. Keine Promises, keine Observables, keine HTTP.