Adapter

27 בSeptember 2012

תגיות:
2 תגובות

 

Adapter

.

   Adapter     כרעיון זאת תבנית גישור בין פלטפורמות.

הוא יכול לבוא בשימוש הפשוט לדוגמא קלאס שאני מנסה להשתמש בו

אולם הוא מממש חוזה שאין לי גישה אליו , לכן אבנה שכבת גישור
ואעבוד מולה

או כפרויקט שלם שמגשר בין שני שפות תכנות כדי שיעבדו ביחד וכן הלאה.

 השימוש בAdapter מקובל מאוד בתחזוקה
של קוד ישן וכו’


זוהי אחת התבניות הפשוטות ביותר להבנה ולתרגול.

ניקח כדוגמא חברה ששומרת את המידע שלה לבסיס נתונים.

יום אחד שודרג בסיס הנתונים למע’ חדשה שדורשת מכל משתמש ידע  ב LINQ

סיסמת אבטחה וכו’ , הוחלט בחברה שעד שכולם יעברו השתלמות בLINQ,

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

נציג דוגמא נוספת באמצעות קוד.

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

במחשב היה סקריפט מוכן שהכיל את הרצף הבא:

class Defect

    {

        public string Description;

        public DateTime DefectDate;

        public int ID;

    }                                                                          

static class DataBaseConnection

    {

 

        public static void SendTedayDefects(Defect[] arr)

        {

            Console.WriteLine(“thank you
dear john,

                     please turn off the comp => have a good
night”
);

        }

     }

ולכן בסוף היום מתיישב ג’ון ליד מחשבו וכותב בvisual
Studio
(2008) את הקוד הבא:

class Program

        {

 

           static void Main(string[] args)

            {

                Defect[] AllDefects = { new Defect()

                {Description=“wrong color bag”,ID=01},

                new Defect(){Description=“less
sugar”
,ID=02}

                                      };


                DataBaseConnection.SendTedayDefects(AllDefects);

            }

                                                                         

זה היה תפקידו..

יום אחד שדרגו את המערכת, ומהיום אין יותר אופציה לשלוח מערכים אלא רק
את הייצוג

שלהם כ List<T>   , בתחילה ניסו ללמד את ג’ון היקר במה מדובר
ולבסוף הוחלט

לבנות לו Adapter  שייראה כך:

המקור,

static class NewDataBaseConnection

    {

        public static void SendTodayDefects(List<Defect> defects)

        {

            Console.WriteLine(“thank you
dear john,your

      machine will shutdown automatically =>
have a good night”
);

        }

                                                                          

ובתוספת האדפטר,

static class DBAdapter

    {

        public static void SendTedayDefects(Defect[] arr)

        {

            NewDataBaseConnection.SendTodayDefects(arr.ToList<Defect>());

 

        }

    }                                                                         

עכשיו בסוף היום ניגש ג’ון וכותב כהרגלו.. רק במקום לDbConnection הוא פונה לDBAdapter

  {

        static void Main(string[] args)

        {

            Defect[] AllDefects = { new Defect()

                {Description=“wrong color bag”,ID=01},

                new Defect(){Description=“less
suggar”
,ID=02}

                                      };

            DBAdapter.SendTedayDefects(AllDefects);

 

        }

    }                                                               
          

 

 

 

 

 

 

 

 

הוסף תגובה
facebook linkedin twitter email

Leave a Reply

Your email address will not be published. Required fields are marked *

2 תגובות

  1. Yossef4 בOctober 2012 ב 9:00

    Great Post.
    TNX man

    Reply
  2. jhosh16 בOctober 2012 ב 13:05

    great work man

    Reply