קורס Java מתקדם Design Patterns קרן כליף. Java מתקדם | Design Patterns | Keren...
-
Upload
jamir-hickling -
Category
Documents
-
view
321 -
download
13
Transcript of קורס Java מתקדם Design Patterns קרן כליף. Java מתקדם | Design Patterns | Keren...
Java | מתקדםDesign Patterns | Keren Kalif | ©2
: נלמד זו ביחידה מהםDesign PatternsCreational PatternsStructural PatternsBehavioral Patterns
design patterns.zip
Java | מתקדםDesign Patterns | Keren Kalif | ©3
Design Patternsמהם Design Pattern ) לבעיה ) מראש וידוע מקובל פתרון הוא תיכון תבנית
נפוצה המבוקשת הבעיה את לפתור כדי הדרושות המחלקות את מציגה התבנית המחלקות שבין הקשרים את מתארת
המושגDesign Pattern " הקבוצה י ע GOF (Group Of Four)הומצאנפוצות לבעיות פתרונות אוסף שהגדירו
Java | מתקדםDesign Patterns | Keren Kalif | ©4
3 - ל Design Patternsמשפחות.1Creational Patterns :האובייקטים יצירת לאופן הקשורים
.2Structural Patterns :המחלקות בין הקשרים ייצוג לאופן הקשוריםיותר ומורכבים גדולים אובייקטים ליצור מנת על והעצמים השונות
.3 Behavioral Patterns :ועצמים מחלקות בהן הדרכים את מאפיינותאחריות ומחלקים מתקשרים
תבניות- - של מצומצם מספר נלמד כזו קבוצה מכל
Java | מתקדםDesign Patterns | Keren Kalif | ©6
Singleton - ב להיות patternשימוש מהמחלקה אובייקטים של המופעים מספר את מגביל זה
1מקסימום במערכת שלו יחיד מופע שנרצה אובייקט לנו יש כאשר הוא השימוש:דוגמאות
o - מ שאילתות המבצעת - DataBaseמחלקה ל: קישורים כמה שיהיו נרצה , DBלא - זמנית בוהעבודה כל את שירכז אחד אובייקט נרצה ולכן
o : הסרטים אוסף את המכיל אחד אובייקט רק נרצה סרטים חנות בכל מערכת ניהול מחלקתשלהם והמלאי
o : הנתונים כל עם אחת מרכזית ישות שיהווה אחד אובייקט רק נרצה זהב דפי
Java | מתקדםDesign Patterns | Keren Kalif | ©7
של Singletonמימושמטיפוס .1 סטטי משתנה הגדרת
המחלקה
2 - ה. - constructorהגדרת privateב
שתחזיר. 3 סטטית שיטה הגדרתמהמחלקה היחיד האוביקט את
Java | מתקדםDesign Patterns | Keren Kalif | ©8
Abstract Factory ליצירת כממשק אובייקטים משמש של , משפחות בקיומם צורך ויש מסוים קשר בעלי
במשפחה האוביקטים כל של . , המשפחות בכל זמין מוצר וכל משפחות ומספר מוצרים מספר יש כאשר שימושי
אחת ממשפחה במוצרים תשתמש המערכת:דוגמא
o ( יהיה לכולם שונים מיצרנים מחשב '(HardDiskהרכבת וכו, זכרוןo( שונים מיצרנים רכב 'BMWהרכבת , , ,)' וכו, גלגלים פח מנוע יש רכב ולכל וכו פורד
Java | מתקדםDesign Patterns | Keren Kalif | ©10
Abstract Factory – החיות עולם דוגמאתקובץ בתוך הקוד דוגמת
הזיפ
Java | מתקדםDesign Patterns | Keren Kalif | ©11
( , גם נקרא קומפילציה בזמן ידוע הבסיס טיפוס רק כאשר ריצה בזמן עצם ליצור משמשVirtual Constructor)
:דוגמאות
o :בציירcopy & paste מסוימת לצורהo נוח תיבת שיכפול
Prototype
Java | מתקדםDesign Patterns | Keren Kalif | ©13
Composite . כל משותף בסיס בעלי שונים לאיברים והטרגוני רקורסיבי נתונים מבנה ליצוג משמש
" או " עלה הוא compositeאיבר:דוגמאות
oXML :מכילelement - ו' , attributeים וכל' בתוכו elementים להכיל נוספים elementיכול יםo : וקבצים נוספות תיקיות להכיל יכולה תיקיה כל במחשב תיקיהo , : נתונים או קטגוריות תתי להכיל יכולה קטגוריה כל זהב בדפי קטגוריות
Java | מתקדםDesign Patterns | Keren Kalif | ©16
adapter design pattern נתונים לקבל המצפה מחלקה לנו שיש הבעיה את לפתור בא זה
לממשק, להתאם כדי כלשהי מניפולציה לעבור שצריכים אחרים נתונים יש ולנו מסוימים לתקשר יכולות לא שכרגע מחלקות בין תקשורת מאפשר נרצה עימה המחלקה של הממשק את לשנות יכולים או רוצים איננו כאשר בו נשתמש
לעבוד" - ל: לחו תקע שקע מתאם דימוי
Java | מתקדםDesign Patterns | Keren Kalif | ©17
adapter - לפתרון כללית צורה
הרצוי הממשקירצה הקליינט איתו
לעבוד
המקורית המחלקההקיימת
המחלקה המתאמת
קובץ בתוך הקוד דוגמתהזיפ
Java | מתקדםDesign Patterns | Keren Kalif | ©18
decorator טיפוס כל עבור ירושה ללא אובייקטים של שונות קומבינציות סוגי לאפשר נועד
oדוגמה ." " " " " פונקציונליות: " להוסיף נרצה עכשיו עיגול ו ריבוע ממנה שיורשים צורה מחלקת" מסגרת " "של " צבע ו
o הרע :הפתרון
Shape
Rectangle Circle
ColoredRectangle ColoredCircleFramedRectangle FramedCircle
ColoredShapeFramedShape
ColoredFramedRectangle ColoredFramedCircle
Java | מתקדםDesign Patterns | Keren Kalif | ©19
decorator – כללית פתרון תצורת
http://3.bp.blogspot.com/-zzLaF2f7KzI/UsAdGOueWnI/AAAAAAAAFn4/YPqEdmiWdbQ/s1600/dec_1.png
Java | מתקדםDesign Patterns | Keren Kalif | ©20
decorator – הצורות לבעית בפתרון שימוש
http://3.bp.blogspot.com/-zzLaF2f7KzI/UsAdGOueWnI/AAAAAAAAFn4/YPqEdmiWdbQ/s1600/dec_1.png
Shapeable
draw()
draw() draw()
Shape ShapeProperty
ShapeWithBorder ShapeWithColor
draw() draw()
Circle Rectangle
קובץ בתוך הקוד דוגמתהזיפ
Java | מתקדםDesign Patterns | Keren Kalif | ©21
decorator - mainה –
- ה מקבל זה c’torמה שקוד מנת על מהמחלקות אחת כל שליתקמפל?
Java | מתקדםDesign Patterns | Keren Kalif | ©22
proxy באובייקט לשלוט ניתן דרכו לאובייקט תחליף מייצר -לproxy המקורי לאובייקט ניגש ודרכו זהה ממשק יהיה ,אשראי כרטיס באמצעות שלנו מהחשבון כסף למשוך ניתן למשל יצוג או המימוש אופן את להסתיר אך מסויים ממשק לחשוף נרצה כאשר בו נשתמש
הנתונים
Java | מתקדםDesign Patterns | Keren Kalif | ©23
proxy - כללית פתרון תצורת
האוביקט נרצה אותולהסתיר
- ה עבור - proxyהממשק וה RealSubject ,בינהם להחליף שניתן כך
בקלות
Java | מתקדםDesign Patterns | Keren Kalif | ©24
builder המימוש לבין אובייקט ליצירת השלבים הגדרת בין להפרדה משמש: , הבאים: השלבים את לבצע יש כלשהו מסמך בניית עבור דוגמה
o המסמך שםo המחברים שמותo עניינים תוכןo המסמך תוכן
• ,' , , לשלבים אחר או כזה באופן נזדקק כולם עבור וכד מבחן טופס משפטי חוזה אהבה מכתב עבור , שונה" הביצוע אופן רק ל הנ
- בין תלות אי ויוצר העצם יצירת לאופן מודע להיות צריך לא הלקוח קוד זו תבנית בעזרתלמימוש שימוש
Java | מתקדםDesign Patterns | Keren Kalif | ©27
facade
- כלשהי מורכבת מערכת בתת שונים ממשקים לכמה יחיד ממשק להוות מטרתו
- מסובכת בינהן התקשורת מערכות תתי הרבה יש כאשר
הfaçade ממשק -high-levelמגדיר המערכת תת עם העבודה על מקל ובכך יחיד
- במערכת המערכות תת בין והתלות התקשורת את הניתן ככל לצמצם היא המטרהo - ה במודל - MVCלמשל שה רוצים : controllerאנחנו אחת מחלקה מול צד בכל יעבור
- ה מצד המנהלת - BLהמחלקה - JFrame/Jpanelוה ה של בצד UIהמרכזי
Java | מתקדםDesign Patterns | Keren Kalif | ©31
Behavioral PatternsoObserveroCommandoTemplateoMediator
oVisitoroStateoStrategy
Java | מתקדםDesign Patterns | Keren Kalif | ©32
Observer , ישודר המרכזי באובייקט ששינוי כך אובייקטים בין לרבים אחד של יחס מגדיר
בו התלויים לאוביקטים :דוגמא
o , האם ולשאול יום כל להתקשר יכולים הלקוחות כל מסוימת בחנות מבצע יש האם לדעת כדימבצע יש
o בכך המעוניינים ללקוחות רק הודעה פעולת יוזמת הייתה שהחנות היה עדיף אבלo " " , צופים, ה הם השאר וכל המרכזי האובייקט הוא הפעולה את שיוזם מי (.observers)כלומר
Java | מתקדםDesign Patterns | Keren Kalif | ©34
Command פקודות של היסטוריה שמירת לאפשר נועד
o לצורךundo - redoו
" אובייקט י ע מיוצגת להיות צריכה פעולה לכן
:דוגמהo בתפריט פקודות אחר מעקב
Java | מתקדםDesign Patterns | Keren Kalif | ©35
Command – הכללית הפתרון תצורת
מחלקה אבסטרקטית
פעולה המייצגת
מחלקה פעולה המייצגת
ספציפית
להפעיל ויודע בקשה מקבל ) אובייקט ) הפעולה את
הספציפית
הפעולות לכל מיפוי מכילהאפשריות
Java | מתקדםDesign Patterns | Keren Kalif | ©36
Command – המחשבון לבעית בפתרון שימוש
Operator
Plus / Minus / …
Operations
Calculator
קובץ בתוך הקוד דוגמתהזיפ
Java | מתקדםDesign Patterns | Keren Kalif | ©37
template
" " נגזרת במחלקה ימומש פרק שכל כך פרקים ראשי ב אלגוריתם הגדרת
o : " בועות במיון להשתמש אחת פעם ניתן בו לחפש כ ואח אוסף למיין הרוצה אלגוריתם למשל , בינארי חיפוש לחפש או סדרתית ולחפש מהיר במיון אחרת ובפעם
Java | מתקדםDesign Patterns | Keren Kalif | ©38
template - לפתרון כללית צורה
קובץ בתוך הקוד דוגמתהזיפ
Java | מתקדםDesign Patterns | Keren Kalif | ©39
mediator
) מתווך ) מתקשרת אובייקטים של קבוצה כיצד המסתיר אובייקט מגדיר
שירותים מהן ומקבל ונותן המחלקות שאר כל את מכיר המתווך
. המחלקות כל קיומו על לו יודיע שיווצר אובייקט וכל במערכת ראשון יווצר המתווךשירותים ממנו ויבקשו בלבד מולו יתקשרו
" לשני אחד ישירות מצביעים לא שהאובייקטים כך י ע חלש לצימוד תורםo - ה: מודל - MVCדוגמא ל להם קרה מה מודיעים הרכיבים בו את, controllerאשר מעדכן אשר
בהתאם הדרושים הרכיבים
Java | מתקדםDesign Patterns | Keren Kalif | ©41
mediator - דוגמא חלוןGUI :
o למשל בתוכו '.combo-box, list, table, text boxיש וכו o - ב בטבלה combo-boxשינוי לשינוי יובילo - שה היא , combo-boxהמטרה , את יעדכן והוא המתווך את יעדכן אלא הטבלה את יכיר לא
הטבלה• , , בכך: יטפל המתווך רק שונה בצורה אלא בטבלה לא הנתונים את להציג נרצה בעתיד אם הסיבה• - ב: שנוי שבעקבות נרצה בעתיד אם , combo-boxהסיבה בכך יטפל המתווך רק יתעדכן נוסף פקד
Java | מתקדםDesign Patterns | Keren Kalif | ©42
Visitor אובייקטים קבוצת על מסוימת פעולה ביצוע , לא פעולות עליהם להפעיל וצריכה מסוימים אובייקטים המכילה שמחלקה מאפשר
אלו פעולות את להכיר תצטרך האובייקטים בין חלש לצימוד תורם
:דוגמהo' , וכו באוסף שונים איברים הגדלת באוסף שונים איברים הדפסתo , כפרמטר תתקבל הפעולה שונה פעולה כל עבור אחת מתודה לכתוב יצטרך שהאוסף במקום
Java | מתקדםDesign Patterns | Keren Kalif | ©43
Visitor – כללית פתרון צורת
מחלקה פעולה המגדירה
מסוימת
Visitableהוא
שנרצה האובייקטאת עליו להגדיר
הפעולה
שמכיל האוסףהאובייקטים את
קובץ בתוך הקוד דוגמתהזיפ
Java | מתקדםDesign Patterns | Keren Kalif | ©44
Visitor – העובדים על הפעולות הפעלת לבעית בפתרון שימוש
IncomeVisitor / VacationVisitorVisitable
Employee
Department
Java | מתקדםDesign Patterns | Keren Kalif | ©45
state . יראה העצם הפנימי במצבו שינוי של כתוצאה התנהגותו את לשנות לעצם מאפשר
! מחלקה החליף הוא כאילו
:דוגמהo כבויה או דלוקה להיות יכולה אשר מנורה
Java | מתקדםDesign Patterns | Keren Kalif | ©47
strategy - לפתרון כללית צורה
קובץ בתוך הקוד דוגמתהזיפ