ראשית כל
יש בקישורים לינק לאתר העוסק ב-DP ושם יש הסבר מפורט. הסבר קצר - הרעיון של Observer הוא שיש מחלקה אחת אליה נרשמים אובייקטים שרוצים לדעת כשקורה משהו. כל האובייקטים שנרשמים צריכים לממש ממשק מסוים, על-מנת שהמחלקה של ה-observer תדע להפעיל אותם (לחילופין, פתרון ++C יכול להיות ע"י שליחת האובייקט ומצביע למתודה שיש להפעיל כשקורה משהו). האחריות של מחלקת ה-observer היא לנהל את האובייקטים שנרשמים אליה, וכאשר קורה מה שקורה, לעבור על כל אחד מהם ולהפעיל את המתודה שהוגדרה בממשק. במקרה שלך, מחלקה A יכולה לרשת מ-observer ומחלקות B ו-C יממשו את הממשק על-מנת שניתן יהיה להפעיל אותן.