Bridge

Wednesday, November 7, 2012

Bridge הרעיון בתבנית Bridge הוא להפריד בין החוזה לבין המימוש כך שלא יהיו תלויים זה בזה. ז"א שאם יש לנו חוזה א' ומולו מימוש ב' אז ב' לא יכיר את א' אלא שחקן חדש שייקרא ג' יהווה את ערוץ הקשר ביניהם, וזאת בעצם התבנית. תבנית ה"גשר" פחות נפוצה אולי בשימוש בעיקר משום שיש לנו דרכים חדשות ליצור הפרדה וחוסר תלות בין הגדרת ממשק לבין המימוש שלו. בעיקר עקב השימוש הנפוץ בתבניות תכנוןכמו מודל שלש שכבות שיוצרים הפרדה וחוסר "תלות" בין חלקים שונים בתכנית שלנו.שימוש גיוני יכול להיות אם נצטרך להחליף מימוש של חוזה בזמן ריצה.בואו נבנה דוגמא בסיסית שלב אחרי שלב: 1.      נגדיר את החוזהpublic interface BridgePattern    {        void DoOperation();     ...
אין תגובות

Decorator

Tuesday, October 16, 2012

  Dacorator  תבנית הDecorator  מספקת "דקורציה" לאובייקט. ז"א נרצה להוסיף לאובייקט קיים התנהגות שאין לו. להרחיב את הממשק שלו. לשנות את ההתנהגות המקורית שלו. התבנית מוכרת גם בשם Wrapper . זאת למעשה אחת התבניות הפשוטות והנפוצות מאוד בשימוש. סביבה מונחית עצמים היא פלטפורמה שבה התבנית מיושמת בכל פינה. וניתן ליישם הרחבה כזאת בהרבה צורות. כשלב ראשון נציג תרחיש בסיסי על שימוש בתבנית: הדרך הפשוטה ביותר היא לרשת מהאובייקט המבוקש , להוסיף יכולות משלי, והנה מימשנו את התבנית.  //base class to decorate     class OriginalClass    {        public void Func1()        {            Console.WriteLine("original class operation");        }    }       //the simple decorator     class Decorator1 : OriginalClass    {        public void Func2()        {            Console.WriteLine("Decorator class operation");        }    }   אלא ש.. כמו שברור לא תמיד ירושה זה נוח או נכון (אם ישנם הרבה ורסיות של שינויים וניצור המון תתי קלאסים לצורך כך נקבל קוד ספגטי...)  לעיתים קרובות גם לא אפשרי לרשת מסיבות שונות. שימוש בDelegate, כחתימה, והגדרת מימוש...