I think the best way is interface
for example:
create an interface and name it “can say and hear hello?”
and then add it to any class that you want it to be able to say and hear “hello”
then every time that somebody says “hello” you must send an interface message(see that link)
then in any class that that interface is added to it , trigger interface event and implement how it must act against the message.
a dog barks. a human says hello. a monkey laughs :))))