תבנית העיצוב של הצופה הוא דומה לפודקאסט

אם אתה מקשיב לפודקאסטים, אתה כבר מכיר את התבנית של הצופה. למעשה, אתה "צופה".

להלן ההגדרה לדפוס התבוננים:

תבנית הצפייה מגדירה תלות בין אחד לרבים בין אובייקטים כך שכאשר אובייקט אחד משנה מצב, כל התלויים שלו מקבלים הודעה ומתעדכנים באופן אוטומטי.

בואו נסתכל על ההגדרה קשור לפודקאסטים.

מצאתי פודקאסט מעניין בשם תה מפתחים.

לאחר לחיצה על כפתור הרשמה, אני עכשיו ברשימת המנויים שלהם.

כאשר תה מפתחים משחרר פרק חדש, האפליקציה תודיע לי ולמנויים אחרים. זה מוריד לנו את הפרק החדש.

זו בדיוק ההגדרה של דפוס הצופה!

תבנית הצפייה מגדירה תלות בין אחד לרבים בין אובייקטים כך שכאשר אובייקט אחד משנה מצב, כל התלויים שלו מקבלים הודעה ומתעדכנים באופן אוטומטי.

יש קשר אחד לרבים בין פודקאסט התה למפתח למנויים.

כאשר תה מפתחים משנה את המצב, למשל שחרור פרק חדש, כל המנויים של תה מפתחים מקבלים הודעה ומעודכנים.

בואו ליישם את זה ברובי.

התחל עם גרסה פשוטה.

שיעור הפודקאסט מחזיק רשימת פרקים ויש לו שיטה להוסיף_episode לרשימה.

אז נוכל ליצור את הפודקאסט Developer_tea ולהוסיף לו את הפרק מספר 1 כך:

אני רוצה לקבל הודעה בכל פעם שתפרסם פרק חדש.

נוכל לעדכן אותי לאחר הוספת פרק חדש לרשימה:

ובכל פעם שאקבל עדכון מ- Developer_tea, אני יכול להמשיך להוריד את הפרק האחרון.

אני כל כך נהנה להקשיב למפתח_טיאה שאני ממליץ עליו לחברתי אמבר. כעת, אמבר רוצה להירשם גם לזה.

עלינו לוודא שאמבר גם תקבל התראה בכל פעם שמתפרסמת פרק חדש:

המממ, הקוד הזה עושה מה שאנחנו רוצים.

אבל יש בעיה.

בכל פעם שאנו רוצים להוסיף מנוי, עלינו להגדיר מחדש את הכיתה.

האם יש דרך לעדכן את רשימת המנויים מבלי שתצטרך להגדיר מחדש את הכיתה?

אנו יכולים לשמור על רשימת מנויים!

מחלקת הפודקאסט החדשה מחזיקה רשימת מנויים בעזרת שתי שיטות חדשות: אחת להוספת מנויים ואחת להסרת מנויים. כאשר יוצא פרק, אנו מעדכנים כל מנוי.

לרוע המזל אמבר לא נהנית ככל האפשר מהפודקאסט ומחליטה לבטל את המנוי. אנו משתמשים בשיטת remove_subscribber כדי להסיר אותה מרשימת המנויים.

Ay כן! בדיוק למדתם את התבנית של הצופה!

עקרון עיצוב מאחורי תבנית הצופה.

תבנית הצופה משתמשת בעקרון העיצוב של צימוד רופף:

יש לשאוף לעיצובים צמודים רופפים בין חפצים אשר קשורים ביניהם.

שיעור הפודקאסט לא יודע הרבה על המנויים שלו. זה רק יודע שלכל מנוי יש שיטת עדכון.

הצימוד הרופף הזה ממזער את התלות בין פודקאסט למנויים שלו. זה גם ממקסם את הגמישות. כל עוד יש לו שיטת עדכון, מנוי יכול להיות כל דבר: אנושי, קבוצת אנשים, חיה או אפילו מכונית.

טיימס:

  1. תבנית הצפייה מגדירה תלות בין אחד לרבים בין אובייקטים כך שכאשר אובייקט אחד משנה מצב, כל התלויים שלו מקבלים הודעה ומתעדכנים באופן אוטומטי.
  2. עיקרון תכנון צימוד רופף: יש לשאוף לעיצובים צמודים רופפים בין חפצים שיש ביניהם אינטראקציה.

תודה שקראתם. האם יש דוגמאות אחרות מהחיים האמיתיים לתבנית הצפייה שאתה יכול לחשוב עליה?

אני מפרסם ל- sihui.io מדי שבוע.

הירשם כמנוי כדי שלא תחמיץ את המאמר הבא מהסדרה.

בפעם הבאה שנדבר על ...