المحتوى هنا ينقصه الاستشهاد بمصادر، أي معلومات غير موثقة يمكن التشكيك بها وإزالتها.
هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها
يرجى مراجعة هذه المقالة وإزالة وسم المقالات غير المراجعة، ووسمها بوسوم الصيانة المناسبة.

نموذج التصميم جسر

من ويكيبيديا، الموسوعة الحرة
اذهب إلى: تصفح، ‏ ابحث
N write.svg
هذه مقالة غير مراجعة. ينبغي أن يزال هذا القالب بعد أن يراجعها محرر ما عدا الذي أنشأها؛ إذا لزم الأمر فيجب أن توسم المقالة بقوالب الصيانة المناسبة. (يونيو 2013)
Question book-new.svg
المحتوى هنا ينقصه الاستشهاد بمصادر. يرجى إيراد مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (مارس 2016)

هذا النموذج يقوم على فصل كيفية بداية عمل الكائن (الغرض) و المحتوى او الناتج النهائي فهو يفصل بين التجريد و التطبيق (implementation). وهذا يفيد في البرامج التي يكون لها تحديثات فجزء منها ثابت وهو الموضوع به التجريد وهو الذي يقوم باستدعاء دالة معينة في الجزء الاخر و هو التطبيق implementaion فتظهر النتائج دون تدخل من الجزء الأول

مثال صغير لكي تتضح الفكرة[عدل]

في البداية قمنا بتعريف واجهة تقوم بعملية معينة. ثم قمنا بتعريف تجريد وهي الصف الجسر و في دالة Constructor نمرر كائن من الواجهة علما بان اي صف تريد ان تجعلها لعمل من خلال الجسر لابد ان ترث من هذا الواجهة ثم قمنا بانشاء صفين كلاهما موروث من الواجهة, و منهما يؤدي وظيفة مختلفة, ولكن دالة استدعاء الوظائف به طبعا مسماها واحد وذلك بفضل الوراثة من الواجهة وبذلك يستطيع الصف المجرد ان يقوم بالعمل مع اي الصف موروث من الواجهة مهما كان الناتج من العمليات الداخلية للصف.

using System;

class BridgePattern 
{

    interface Bridge
    {
        string OperationImp();
    }

    // Bridge Pattern Judith Bishop Dec 2006, Aug 2007
    // Shows an abstraction and two implementations proceeding independently

    class Abstraction
    {
        Bridge bridge;
        public Abstraction(Bridge implementation)
        {
            bridge = implementation;
        }
        public string Operation()
        {
            return "Abstraction" + "<<< BRIDGE >>>> " + bridge.OperationImp();
        }
    }

    class ImplementationA : Bridge
    {
        public string OperationImp()
        {
            return "ImplementationA";
        }
    }

    class ImplementationB : Bridge
    {
        public string OperationImp()
        {
            return "ImplementationB";
        }
    }

    static void Main()
    {
        Console.WriteLine("Bridge Pattern\n");
        Console.WriteLine(new Abstraction(new ImplementationA()).Operation());
        Console.WriteLine(new Abstraction(new ImplementationB()).Operation());
    }
}

/* Output
Bridge Pattern 
Abstraction <<< BRIDGE >>>>ImplementationA
Abstraction <<< BRIDGE >>>> ImplementationB
*/