Container/presenter split, Context vs global store, and when to lift or push state.
Use this concept when designing systems that require the capabilities described above. Consider the trade-offs carefully against simpler alternatives before committing to the added complexity.