Ну вот например есть у нас в приложении подсистема для записи видео сессии. Изначально подсистема проектировалась таким образом, чтобы не знать ничего о всем остальном приложении. То есть была у неё своя собственная модель, свой апдейтер и месседжи и даже свои порты и все как надо, потом эта подсистема использовалась снаружи и все были счастливы. А потом вдруг оказалось, что пользователю нужно предложить согласие на то чтобы сессия была записана, пользователь может согласиться а может и нет и в зависимости от его ответа должны произойти некоторые изменения уже в другой подсистеме, никак не связанной с записью.
То есть нам надо организовать общение между двумя независимыми подсистемами