The Factory Method Design Pattern הוא כמו מפעל של אובייקטים. ה-pattern מספק לנו interface שממנו אנחנו מייצרים אובייקטים כ-superclass ומאפשרים להן לשנות את הסוג שלהן בזמן יצירה. מה זה Factory Method? נניח שיש אפליקציה שמנהלת מרכז לוגיסטיקה. בהתחלה עבדנו עם משאיות, ולכן כל הקוד שלנו נמצא בתוך אובייקט Truck. אחרי כמה זמן, חברת הפצה ימית […]
The Decorator Design Pattern מאפשר לנו להוסיף פונקציונליות לאובייקטים קיימים בזמן ריצה מבלי לשנות את המבנה של האובייקט המקורי. אנחנו יוצרים class שהוא decorator והוא עוטף את ה-class המקורי ומוסיף את הפונקציונליות. בדרך כלל decorator class יהיה בעל אחריות על פעולה אחת בלבד. מה זה Decorator Design Pattern? נניח שאני בבית קפה. אני מזמינה קפה […]
The Observer Design Pattern מגדיר עבורנו יחסים של יחיד לרבים בין אובייקטים, כך שכשמתבצע שינוי באובייקט שאנחנו עוקבים אחריו, כל התלויים בו יקבלו הודעה ויתעדכנו. מה זה Observer Design Pattern? נניח שיש לכם ערוץ יוטיוב. בכל פעם כשאתם מעלים וידאו, כל המנויים שלכם מקבלים הודעה. הערוץ שלכם "נצפה" על ידי המנויים שהם "צופים". כשמעלים סרטון […]
Strategy Design Pattern בא לעזרתנו כשיש לנו אסטרטגיה להשיג מטרה כלשהי ואנחנו רוצים את היכולת להחליף אותה כשיש צורך. אנחנו נרצה להחליף את האסטרטגיה בזמן ריצה, בלי לשנות את הקוד שמשתמש באלגוריתם. מה זה Strategy Design Pattern? נניח שאנחנו יוצרים משחק וידאו שהדמות הראשית שלו יכולה לתקוף אוייבים. לדמות יכולים להיות כלי נשק שונים לבחור […]
Design patterns הם פתרונות בהנדסת תוכנה לשימוש רב פעמי לבעיות נפוצות. זה לא תבניות קוד, אלא קווים מנחים של איך לפתור את הבעיה בדרך ברורה ו-scalable למערכות גדולות. יש כמה design patterns קלאסיים. Creational Design Patterns Singleton Pattern – מבטיח של-class יש מופע אחד בלבד ומספק נקודת גישה גלובלית למופע הזה. Factory Method Pattern – […]
התקנה נתקין את ה-package של FluentValidation, FluentValidation.DependencyInjection, FluentValidation.AspNetCore מתוך nuget. מודל הנתונים שלנו של האוביקט שמגיע מה-client הוא: קובץ ProductDto.cs אנחנו רוצים להוסיף חוקיות לאובייקט הזה. יצירת ה-validator ניצור תיקיית validation בתוכה ניצור class בשם ProductDtoValidator. אנחנו יורשים מ-AbstractValidator ושולחים את האובייקט שאנחנו עושים לו ולידציה. קובץ ProductDtoValidator.cs אנחנו נגדיר constructor ובתוכו נשתמש בפונקציות שקבלנו […]
אחרי שעשינו מימוש עם Minimal Api אנחנו רוצים לראות צורת מימוש נוספת. Entity Framework היא טכנולוגיה שעוזרת לנו לחבר את ה-DB לאובייקטים של net. בצורה אינטואיטיבית. היא עוזרת לחבר בין שכבת המידע לביזנס logic. אנחנו רוצים מנגנון שיודע לשמור רשימות של items, ו-Entity Framework הוא אחד המנגנונים שיודע לעשות את זה. הדרך שבה הוא שומר […]
כשיש לנו פער בין האובייקט שאנחנו מקבלים מה-DB והמידע שאנחנו צריכים במד הסרבר לבין המידע שבסופו של דבר עובר ל-client שהוא "רזה" יותר, יהיה לנו class אחד שיחזיק את האובייקט המלא ואחד שיחזיק את מה שעובר הלאה ל-client. החזרת אובייקט DTO בקוד שלנו יש את ה-class בשם Product: קובץ product.cs ואת ProductDto. קובץ productDto.cs אם […]
אם יש לנו 2 קומפוננטות שאנחנו רוצים לתקשר ביניהן, אנחנו יכולים לשתף את ה-Action Stream בין שתיהן. Share the Action Stream נניח שיש לנו עמוד נוסף שמציג את הפוסטים בצורה אחרת, ניצור בשבילו קומפוננטה נפרדת. נוסיף גם route שיוביל לקומפוננטה וקישור בתפריט הראשי. קובץ app-routing.module.ts נעבור לקומפוננטה החדשה, נקרא ל-service של הפוסטים ונקבל את הפוסטים. […]
יצירת קובץ Minimal Api נפריד את הגדרות ה-Minimal Api לקובץ נפרד. נייצר תיקייה בשם EndPoints. בתוכו נייצר class שבו ישבו ProductsEndPoints. את ה-class נגדיר כ-static. קובץ ProductsEndPoints.cs בתוך ה-class נגדיר extention methods, שזה היכולת להגדיר פונקציה שהיא שייכת ל-class או interface בלי לכתוב אותה בתוכם. את כל הפעולות שעשינו עד עכשיו עשינו דרך ה-app, שזה […]