نمط الواجهة
نمط الواجهة (يُكتب أيضًا façade ) هو نمط تصميم برمجي يستخدم عادةً في البرمجة الموجهة للكائنات . وهو مشابه للواجهة في الهندسة المعمارية، فهو كائن يعمل كواجهة أمامية تخفي كودًا أساسيًا أو هيكليًا أكثر تعقيدًا. يمكن للواجهة:
- تحسين قابلية القراءة وسهولة الاستخدام لمكتبة البرامج من خلال إخفاء التفاعل مع المكونات الأكثر تعقيدًا خلف واجهة برمجة تطبيقات (API) واحدة (ومبسطة غالبًا)
- توفير واجهة خاصة بالسياق لمزيد من الوظائف العامة (مكتملة بالتحقق من صحة الإدخالات الخاصة بالسياق )
- تعمل كنقطة انطلاق لإعادة هيكلة أوسع للأنظمة المتجانسة أو المرتبطة بإحكام لصالح كود مرتبط بشكل أكثر مرونة
غالبًا ما يستخدم المطورون نمط تصميم الواجهة عندما يكون النظام معقدًا للغاية أو يصعب فهمه لأن النظام يحتوي على العديد من الفئات المترابطة أو لأن الكود المصدر الخاص به غير متاح. يخفي هذا النمط تعقيدات النظام الأكبر ويوفر واجهة أبسط للعميل. يتضمن عادةً فئة غلاف واحدة تحتوي على مجموعة من الأعضاء المطلوبة من قبل العميل. تصل هذه الأعضاء إلى النظام نيابة عن عميل الواجهة وتخفي تفاصيل التنفيذ.
ملخص
نمط تصميم الواجهة [1] هو أحد أنماط تصميم GoF الثلاثة والعشرين المعروفة التي تصف كيفية حل مشاكل التصميم المتكررة لتصميم برمجيات موجهة للكائنات مرنة وقابلة لإعادة الاستخدام، أي الكائنات التي يسهل تنفيذها وتغييرها واختبارها وإعادة استخدامها.
ما هي المشاكل التي يمكن لنمط تصميم الواجهة حلها؟ [2]
- لتسهيل استخدام نظام فرعي معقد، يجب توفير واجهة بسيطة لمجموعة من الواجهات في النظام الفرعي.
- ينبغي تقليل الاعتماد على النظام الفرعي.
إن العملاء الذين يمكنهم الوصول إلى نظام فرعي معقد يشيرون مباشرة إلى (يعتمدون على) العديد من الكائنات المختلفة التي لها واجهات مختلفة (اقتران ضيق)، مما يجعل من الصعب تنفيذ العملاء وتغييرهم واختبارهم وإعادة استخدامهم.
ما هو الحل الذي يصفه نمط تصميم الواجهة؟
تعريف Facadeالكائن الذي
- ينفذ واجهة بسيطة من حيث (عن طريق التفويض إلى) الواجهات في النظام الفرعي و
- قد يؤدي وظائف إضافية قبل/بعد إعادة توجيه الطلب.
يتيح هذا العمل من خلال Facadeكائن ما لتقليل الاعتماد على نظام فرعي.
راجع أيضًا مخطط فئة UML وتسلسلها أدناه.
الاستخدام
تُستخدم الواجهة عندما تكون هناك حاجة إلى واجهة أسهل أو أبسط لكائن أساسي. [3] بدلاً من ذلك، يمكن استخدام المحول عندما يجب أن يحترم الغلاف واجهة معينة ويجب أن يدعم السلوك المتعدد الأشكال . يجعل الديكور من الممكن إضافة أو تغيير سلوك الواجهة في وقت التشغيل.
| نمط | نية |
|---|---|
| محول | يحول واجهة إلى أخرى بحيث تتطابق مع ما يتوقعه العميل |
| مُزيّن | يضيف المسؤولية بشكل ديناميكي إلى الواجهة عن طريق تغليف الكود الأصلي |
| الواجهة | يوفر واجهة مبسطة |
يتم استخدام نمط الواجهة عادةً عندما
- مطلوب واجهة بسيطة للوصول إلى نظام معقد،
- النظام معقد للغاية أو صعب الفهم،
- هناك حاجة إلى نقطة دخول لكل مستوى من مستويات البرامج الطبقية، أو
- إن التجريدات وتنفيذات النظام الفرعي مرتبطة ارتباطًا وثيقًا.
بناء
مخطط فئة وتسلسل UML
في مخطط فئة UML هذا ، لا تصل الفئة إلى فئات النظام الفرعي بشكل مباشر. بدلاً من ذلك، تعمل من خلال فئة تنفذ واجهة بسيطة من حيث (عن طريق التفويض إلى) فئات النظام الفرعي ( ،، و ). تعتمد فقط على الواجهة البسيطة وهي مستقلة عن النظام الفرعي المعقد. [4]ClientClientFacadeClass1Class2Class3ClientFacade
يوضح مخطط التسلسل التفاعلات التي تتم أثناء وقت التشغيل: Clientيعمل الكائن من خلال Facadeكائن يفوض الطلب إلى المثيلات Class1، Class2، و Class3
التي تقوم بتنفيذ الطلب.
مخطط فئة UML
- الواجهة
- تقوم فئة الواجهة بتلخيص الحزم 1 و2 و3 من بقية التطبيق.
- العملاء
- تستخدم الكائنات نمط الواجهة للوصول إلى الموارد من الحزم.
مثال
هذا مثال تجريدي لكيفية تفاعل العميل ("أنت") مع واجهة ("الكمبيوتر") لنظام معقد (أجزاء الكمبيوتر الداخلية، مثل وحدة المعالجة المركزية والقرص الصلب).
سي++
هيكل وحدة المعالجة المركزية { void تجميد (); void القفز ( موقف طويل ) ); void تنفيذ (); };
هيكل القرص الصلب { char * Read ( long lba , int size ); };
هيكل الذاكرة { void Load ( long position , char * data ); };
class ComputerFacade { public : void Start () { cpu_ . Freeze (); memory_ . Load ( kBootAddress , hard_drive_ . Read ( kBootSector , kSectorSize )); cpu_ . Jump ( kBootAddress ); cpu_ . Execute (); }
خاص :
وحدة المعالجة المركزية cpu_ ؛ الذاكرة memory_ ؛ القرص الصلب hard_drive_ ؛
int main () { ComputerFacade computer ; computer . Start (); }
انظر أيضا
مراجع
- ^ إيريك جاما، ريتشارد هيلم، رالف جونسون، جون فليسايدس (1994). أنماط التصميم: عناصر البرمجيات الموجهة للكائنات القابلة لإعادة الاستخدام . أديسون ويسلي. ص 185 وما يليه. ISBN 0-201-63361-2.
{{cite book}}:CS1 maint: أسماء متعددة: قائمة المؤلفين ( الرابط ) - ^ "نمط تصميم الواجهة - المشكلة والحل وإمكانية التطبيق". w3sDesign.com . تم الاسترجاع في 12 أغسطس 2017 .
- ^ فريمان، إيريك؛ فريمان، إليزابيث؛ سييرا، كاثي؛ بيتس، بيرت (2004). هندريكسون، مايك؛ لوكيديس، مايك (المحررون). أنماط التصميم "الرأس أولاً" (غلاف ورقي) . المجلد 1. أوريلي. ص 243، 252، 258، 260. رقم ISBN 978-0-596-00712-6. تم الاسترجاع بتاريخ 2012-07-02 .
- ^ "نمط تصميم الواجهة - البنية والتعاون". w3sDesign.com . تم الاسترجاع في 2017-08-12 .
روابط خارجية
- الوصف من مستودع أنماط بورتلاند
