2.3 תבניות התנהגות תרגול
Observer¶
תרגיל 1¶
מערכת TaskFlow צריכה לשלוח התראות כשמשימה מוקצית למשתמש חדש.
בנו מערכת Observer שבה:
- AssignmentEvent מכיל את פרטי ההקצאה (task_id, assignee_id, assigner_id)
- EmailAssignmentListener שולח מייל לנמען
- InAppNotificationListener יוצר התראה בתוך האפליקציה (מדפיס לקונסול)
- TaskService.assign_task(task_id, assignee_id, assigner_id) מפרסם את האירוע
Strategy¶
תרגיל 2¶
בנו מערכת סינון משימות עם Strategy:
- ממשק
TaskFilterStrategyעם מתודהfilter(tasks: list) -> list FilterByStatus(status: str)- מסנן לפי סטטוסFilterByOwner(owner_id: int)- מסנן לפי בעליםFilterOverdue()- מסנן רק משימות שעבר תאריך היעד שלהן (בהנחה שיש שדהdue_dateכ-string בפורמט YYYY-MM-DD)CompositeFilter(filters: list)- מאפשר לשלב כמה פילטרים ביחד (AND)
Command¶
תרגיל 3¶
הוסיפו DeleteTaskCommand למערכת ה-Command שבהרצאה.
- execute() - מוחק את המשימה ושומר אותה לצורך undo
- undo() - משחזר את המשימה שנמחקה
לאחר מכן, כתבו תרחיש שבו:
1. יוצרים שתי משימות
2. מוחקים את הראשונה
3. עושים undo למחיקה
4. מוודאים שהמשימה חזרה