EventEmitter
. В нем создайте необходимые методы: subscribe
отметьте как public
, а addReaction
и fire
— protected
.Person
от EventEmitter
: public class Person extends EventEmitter
.subscribe
, остальные остаются им не доступны.EventEmitter
все равно смогут вызывать скрытые методы. Ибо в Java нельзя одновременно разрешить доступ для sub-классов и запретить для пакета: access control.