קורס Java מתקדם Design Patterns קרן כליף. Java מתקדם | Design Patterns | Keren...

49
ססססJava סססססDesign Patterns ססס סססס

Transcript of קורס Java מתקדם Design Patterns קרן כליף. Java מתקדם | Design Patterns | Keren...

מתקדם Javaקורס

Design Patterns

כליף קרן

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 :ועצמים מחלקות בהן הדרכים את מאפיינותאחריות ומחלקים מתקשרים

תבניות- - של מצומצם מספר נלמד כזו קבוצה מכל

Creational Patterns

Singleton

Abstract Factory

Factory Method

Prototype

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 | ©9

Abstract Factory – כללי תרשים

Java | מתקדםDesign Patterns | Keren Kalif | ©10

Abstract Factory – החיות עולם דוגמאתקובץ בתוך הקוד דוגמת

הזיפ

Java | מתקדםDesign Patterns | Keren Kalif | ©11

( , גם נקרא קומפילציה בזמן ידוע הבסיס טיפוס רק כאשר ריצה בזמן עצם ליצור משמשVirtual Constructor)

:דוגמאות

o :בציירcopy & paste מסוימת לצורהo נוח תיבת שיכפול

Prototype

Composite

Adapter

Decorator

Proxy

Builder

Facade

Structural Patterns

Java | מתקדםDesign Patterns | Keren Kalif | ©13

Composite . כל משותף בסיס בעלי שונים לאיברים והטרגוני רקורסיבי נתונים מבנה ליצוג משמש

" או " עלה הוא compositeאיבר:דוגמאות

oXML :מכילelement - ו' , attributeים וכל' בתוכו elementים להכיל נוספים elementיכול יםo : וקבצים נוספות תיקיות להכיל יכולה תיקיה כל במחשב תיקיהo , : נתונים או קטגוריות תתי להכיל יכולה קטגוריה כל זהב בדפי קטגוריות

Java | מתקדםDesign Patterns | Keren Kalif | ©14

Composite – לפתרון כללית צורה

Java | מתקדםDesign Patterns | Keren Kalif | ©15

Composite - דוגמאקובץ בתוך הקוד דוגמת

הזיפ

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 | ©25

builder – לפתרון כללית צורה

Java | מתקדםDesign Patterns | Keren Kalif | ©26

builder – מסמך המרת דומאת

קובץ בתוך הקוד דוגמתהזיפ

Java | מתקדםDesign Patterns | Keren Kalif | ©27

facade

- כלשהי מורכבת מערכת בתת שונים ממשקים לכמה יחיד ממשק להוות מטרתו

- מסובכת בינהן התקשורת מערכות תתי הרבה יש כאשר

הfaçade ממשק -high-levelמגדיר המערכת תת עם העבודה על מקל ובכך יחיד

- במערכת המערכות תת בין והתלות התקשורת את הניתן ככל לצמצם היא המטרהo - ה במודל - MVCלמשל שה רוצים : controllerאנחנו אחת מחלקה מול צד בכל יעבור

- ה מצד המנהלת - BLהמחלקה - JFrame/Jpanelוה ה של בצד UIהמרכזי

Java | מתקדםDesign Patterns | Keren Kalif | ©28

facade – והבעיה הפתרון הצגת

Java | מתקדםDesign Patterns | Keren Kalif | ©29

facade –לפתרון כללית צורה

Java | מתקדםDesign Patterns | Keren Kalif | ©30

Facade – המשכנתא דוגמאתקובץ בתוך הקוד דוגמת

הזיפ

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 | ©33

observer –כללית פתרון צורת

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 | ©40

mediator –לפתרון כללית צורה

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 | ©46

state - לפתרון כללית צורה

קובץ בתוך הקוד דוגמתהזיפ

Java | מתקדםDesign Patterns | Keren Kalif | ©47

strategy - לפתרון כללית צורה

קובץ בתוך הקוד דוגמתהזיפ

Java | מתקדםDesign Patterns | Keren Kalif | ©48

ולסיום..

Java | מתקדםDesign Patterns | Keren Kalif | ©49

: למדנו זו ביחידה מהםDesign PatternsCreational PatternsStructural PatternsBehavioral Patterns