package Ġbehaviour al _ patterns . medi ator Ċ Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġio . reactivex . rx java 3 . core . Observer Ċ Ċ // ĠEvent ĠBroker Ġwith Ġreactive Ġextensions Ċ Ċ class ĠEvent Broker : ĠObservable < Int >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġob servers Ġ= ĠArrayList < Observer < in ĠInt >>() ĊĊĠĠĠ Ġfun Ġpublish ( n : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( observer Ġin Ġob servers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserver . onNext ( n ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubscribe Actual ( observer : ĠObserver < in ĠInt > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( observer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers . add ( observer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠF oot ball Player ( ĊĠĠĠ Ġprivate Ġval Ġbroker : ĠEvent Broker , ĊĠĠĠ Ġval Ġname : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġgoals S cored Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġscore () Ġ{ ĊĠĠĠĠĠĠĠ Ġbroker . publish ( ++ goals S cored ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠF oot ball Co ach ( broker : ĠEvent Broker ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbroker . subscribe Ġ{ Ġprintln (" H ey , Ġyou Ġs cored Ġ$ it Ġgoals !") Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġbroker Ġ= ĠEvent Broker () ĊĠĠĠ Ġval Ġplayer Ġ= ĠF oot ball Player ( broker , Ġ" John ") ĊĠĠĠ Ġval Ġco ach Ġ= ĠF oot ball Co ach ( broker ) ĊĊĠĠĠ Ġplayer . score () ĊĠĠĠ Ġplayer . score () ĊĠĠĠ Ġplayer . score () Ċ } Ċ