i think the "private field message" is missed in EmailAlertListner in observer pseudo code. can you check that out please? it is not that much of a issue and does not make any harder to understand the pattern, but i thought of telling you so that i could know if i'm mistaken.
this is the best design pattern explanation i found on whole internet. thank you for the amazing work and love your work.