Adapter

27 בSeptember 2012

  Adapter .   Adapter     כרעיון זאת תבנית גישור בין פלטפורמות. הוא יכול לבוא בשימוש הפשוט לדוגמא קלאס שאני מנסה להשתמש בו אולם הוא מממש חוזה שאין לי גישה אליו , לכן אבנה שכבת גישור ואעבוד מולה או כפרויקט שלם שמגשר בין שני שפות תכנות כדי שיעבדו ביחד וכן הלאה.  השימוש בAdapter מקובל מאוד בתחזוקה של קוד ישן וכו' זוהי אחת התבניות הפשוטות ביותר להבנה ולתרגול. ניקח כדוגמא חברה ששומרת את המידע שלה לבסיס נתונים. יום אחד שודרג בסיס הנתונים למע' חדשה שדורשת מכל משתמש ידע  ב LINQ סיסמת אבטחה וכו' , הוחלט בחברה שעד שכולם יעברו השתלמות בLINQ, יעבדו מול פרויקט מגשר שמכיר מצד אחד את כל המשתמשים ומצד שני מייצר את הקוד...
תגיות:
2 תגובות

Command חלק ב’ Undo/Redo

23 בSeptember 2012

Command חלק ב – Undo / Redo אם הבנו את פרק א, בואו ננסה להציג משהו מורכב יותר. (ושימושי) כאמור הזכרתי בחלק א  ששימוש בcommand במקום פונקציות רגילות נותן לנו את האפשרות של undo /redo . בניתם אפליקציה? מזל טוב.. תחשבו אם לא כדאי להוסיף יכולת כזאת לפני שאתם מעלים לappStore.. בינתיים נבין אז איך זה עובד.   אני אדגים את הרעיון על רשימת מוצרים שאני יכול להוסיף או לגרוע ממנה אבל הכי חשוב אני יכול להתחרט ולמחזר את הפעולות שלי, ז"א שאם מחקתי איבר מהרשימה יהיה לי את הכוח להחזיר אותו.. יותר מזה אני יכול להתחרט על המחזור ולמחזר אות המחזור בעצמו.. ז"א כן למחוק את אותו המוצר...
4 תגובות

Command חלק א

21 בSeptember 2012

בשונה מרוב תבניות העיצוב, תבנית command דווקא כן מוכרת לרוב אנשי המקצוע מהסיבה שמשתמשים בה פעמים רבות , כולל בשמה הישיר ולא רק במימושים השונים שלה לדוגמא בWPF – MVVM ,    הרעיון : לעטוף מימוש של פעולה בקלאס,  (זה קצת מזכיר דלגייט , אבל השימוש שונה בתכלית , על  Delegate נכתוב פוסט נפרד Interface pattern)) ואין שום קשר בין התבניות ) מבנה התבנית: ...
אין תגובות

Builder

12 בSeptember 2012

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             תבנית הבילדר היא די פשוטה להבנה ומימוש, הבעיה מתחילה אחרי שפגשנו (בפוסט הקודם) את הפקטורי. שם הפוסט אמור היה להיות factory VS builder אבל אני לא מנהל כאן אתר ארכיאולוגי (עיין ערך חפירות ארכיאולוגיות בגוגל) מטרתי היא להעביר סקירה על התבניות המצויות ולפשט אותם בכל זאת אי אפשר בלי התייחסות בסיסית : כדי להבין מי נגד מי דבר ראשון נחליט שאין לנו קונסטרקטור ב#C.. אוקיי אז ניצור אחד כזה לבד , אני מניח שהוא יראה בערך כך על אובייקט שמדמה מגש פיצה.   "קלאס פיצה": שדות: בצק, רוטב, גבינה , זיתים , תבלינים. (אפשר להמשיך אבל הרעיון ברור, כל אלמנט הוא שדה של הקלאס פיצה) בנוסף יכול להיות הבדל...
תגיות:
3 תגובות

Factory

9 בSeptember 2012

Factory Pattern פקטורי – מפעל , משמעות תבנית העיצוב פקטורי היא , לתת למישהו את האחריות ליצירת אובייקטים, להפריד בין הלקוח של הקלאס לבין מי שיוצר אותו ולא שהלקוח ייצור אובייקטים ישירות מישהו הזכיר Encapsulation ? תבנית פקטורי מתחלקת לשני מימושים עיקריים  Factory Method  למול abstract Factory נתחיל בראשון שהוא פשוט יותר ומקובל מאוד . בואו נחשוב על התרחיש הבא.   א.      חנות חיות שמוכרת חיות מחמד אלקטרונית, ב.      בחנות יש "חיומט" מכונה שבה הלקוחות בוחרים איזו חיה אהובה עליהם. ג.       לעת עתה נסתפק בכלב וחתול. ד.      כלב וחתול בצורתם הלוגית יורשים מ .animal ה.      הלקוח בוחר חיה וה"חיומט" קורא לבנאי של הקלאס המתאים ופולט מוצר.    תרחיש כזה הוא שימוש  קלאסי בfactory method שיודע בזמן ריצה את מי ליצור, הקליינט לא יודע...
2 תגובות

proxy

6 בSeptember 2012

Proxy pattern   פרוקסי הוא אחד מהתבניות השמישות ביותר, פרוקסי כהגדרה הוא נציג של מישהו.. הוא עוטף אובייקט אמיתי ו"מסתיר" את כל היכולות והכוונות שלו , אבל שומר על המבנה שלו ועל החוקיות שלו.נושא קרוב מאוד למתכנתי סי שארפ  זהproperties   שעוטפים שדה אמיתי, השימוש בפרוקסי כרעיון מופיע בהרבה צורות שונות , בתור דוגמא ראשונית נחשוב על בנק בעולם האמיתי. לבנק יש חשבון כללי שבו מוחזקים כל המזומנים של הבנק, לבנק יש כמובן המון רישומים נוספים כמו כמות הלקוחות ומצב העו"ש והחסכונות שלהם סביר גם שבאיזשהו מקום הבנק יודע מיהם העובדים שלו וכמה הם מרוויחים , וכו' עכשיו בואו נחשוב על פקיד שכל תפקידו הוא להפקיד כסף או למשוך כסף האם יש לי צורך לתת לו גישה לכל...
תגובה אחת

ProtoType

4 בSeptember 2012

  Prototype פרוטוטייפ – אבטיפוס בעברית מהו אבטיפוס כשמדברים על object oriented? בוא נניח שיש לי קלאס  A, ויש לי מופע שלו שנקרא A1. מה אם היתה לי היכולת גם כשאין לי  public constructor ליצור מופע מאותו טיפוס בהתייחס ל  typeשל המופע הקיים,ולא, לא בעזרת reflection השימוש ב prototype  מוטמע עמוק ב#C רק לא בהכרח שמים אליו לב.. למעשה בעת ביצוע serialize  על אובייקט ולאחר מכן נבצע deserialize ביצענו מחזור שלם של שימוש במנגנון prototype.clone ( שאותו מיד נסביר)   שאלה רטורית: מהם הפונקציות שיש לכל אובייקט ב #C  ? טוב...
2 תגובות

SingleTon

Singleton Pattern   הרעיון: בוא נחשוב על התרחיש הבא, שני משתמשים שרצים בו זמנית על מחשב אחד, הראשון כותב והשני מוחק לו.. הראשון מאתחל את המערכת בזמן שהשני עורך מסמך.. בוא נעצור את התרחיש כאן.. בבירור נרצה שכל משתמש פיזי על המערכת יהיה אחד בכל פעם  ועכשיו לדוגמא מעשית יותר:  בפרויקט מרובה קלאסים כשנרצה להחזיק מידע מסוים בצורה סטאטית שיחלוק את המידע שבו עם כל חלקי הפרויקט, במילים אחרות למנוע מצב של מופעים מרובים על אותו אובייקט קרוב לוודאי שנשתמש באיזשהו קונספט של static class  ולא שבכל גישה לאובייקט נגדיר  instance חדש עם ערכים חדשים . או שנרצה ליצור לקלאס מצב של singleton  שהוא טיפה יותר נוח מסתם קלאס סטטי, ניתן לרשת, לממש אינטרפייס, ובשונה מסתם משתנה סטטי...
3 תגובות

בתכנות מונחה עצמים(Design Patterns) מבוא לתבניות עיצוב

3 בSeptember 2012

  מבוא לDesign Patterns (תבניות עיצוב) בתכנות מונחה עצמים  סטודנטים ואנשי תוכנה מתחילים נתקלים פעמים רבות במושג:  Design patterns ולא ממש יודעים איך לאכול אותו.סביר להניח שכולנו שמענו על סינגל טון (singleton pattern) אבל משם ואילך העסק נהיה יותר ויותר קודר. אז מה זה בדיוק?תבנית עיצוב כהגדרה זה פתרון מוכח לבעיה ידועה שכנראה חוזרת על עצמה והפתרון שנמצא ניתן לשימוש חוזר בבעיות דומות.בוא נניח שהבעיה היא חציית נהר בעזרת סירה במהירות מקסימלית. עכשיו בוא נניח  שאדון  X מהעיר דלהי פיתח שיטה לחציית נהר הגנגס בהינף משוט אחד, האם לא יוכל אדון Y מלונדון לחצות את התמזה באותה שיטה?ומה לגבי Z על נהר הירקון ?? אם נמצא דרך שבה...

פתיחה

שלום לכולם  ,  הבלוג הזה נכתב בשפה העברית  , מתוך מטרה ברורה לספק תמיכה לדוברי השפה אשר הינם , מפתחים , בודקים , או סטודנטים, ומצטרף לשורה הולכת וגדלה של בלוגים מקצועיים הכתובים בעברית, הרבה מהם של חבריי בסלע מטרת הבלוג היא לחלוק מידע וידע, לשתף בעיות ותובנות,  ולהחזיר לקהילת המפתחים על הידע הרב שצברתי ברחבי הרשתאשמח לכל פידבק  , אוריאל.  
3 תגובות