Mediator

複数のオブジェクト間の調整役となるオブジェクトを置くような構造をMediatorパターンという。

16.Mediator パターン | TECHSCORE(テックスコア)

main.cppで、

managerが調整役(Mediator)となり、3つのstaffを調整する。
最初はstaff3つとも値を0にしておいて、staff1からstaff3まで順に値を1にしていく。

$ vi main.cpp 
$ g++ -o main main.cpp manager.cpp staff.cpp 
$ ./main 
staff1 value_ = 0
staff2 value_ = 0
staff3 value_ = 0
0, 0, 0
staff1 value_ = 1
1, 0, 0
staff2 value_ = 1
staff1 value_ = 0
0, 1, 0
staff3 value_ = 1
staff2 value_ = 0
0, 0, 1
$

staff1に1をセットするのはいいとして、staff2に1をセットすると、同時にstaff1は0に戻る。
staff3に1をセットすると、同時にstaff2は0に戻る。
このように、2つ以上が1にならないように調整している。

Sample/designpattern/mediator/mediator/src/mediator at master · bg1bgst333/Sample · GitHub