לדלג לתוכן

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. מוודאים שהמשימה חזרה