وضع محول جافا
في الآونة الأخيرة ، كنت أتعلم أساسيات Java ولدي الكثير من الشكوك عندما كنت أتعلم محولات. لقد بحثت في المعلومات عبر الإنترنت ووجدت الكثير من المعلومات حول المحول ، لكن هذه المقالة جيدة. إليك سجل ، يمكنك قراءة ما تحتاجه.
يتمثل نمط المحول في تحويل واجهة فئة إلى واجهة أخرى يتوقعها العميل ، بحيث لا تتطابق فئتان من واجهاتهما الأصلية ولا يمكن العمل معًا. من الناحية الوظيفية ، فإن الفئات التي لا تتوافق مع هذه الواجهات لها نفس الوظائف أو المشابهة بشكل عام. عادةً ما نقوم بحل هذا النوع من عدم توافق الواجهة عن طريق تعديل واجهة هذه الفئة ، ولكن إذا كنا غير راغبين في تعديل الواجهة الأصلية للتطبيق ، أو ليس لدينا رمز المصدر للكائن على الإطلاق ، فسيكون وضع المحول مفيدًا.
مزايا المحول:
1. فصل الفئة المستهدفة وفئة المحول
2. زيادة الشفافية وإعادة استخدام الفصل ، وتغليف التنفيذ المحدد في فئة المحول ، وهو شفاف لفئة العميل ، ويحسن قابلية إعادة الاستخدام للمحول.
3. كل من المرونة والتوسع جيدان للغاية ، وتوافق مع مبدأ الفتح والإغلاق
تتضمن الأدوار المشاركة في المحول ما يلي:
الهدف: يحدد الواجهة المحددة التي يستخدمها العميل.
العميل: استخدم الواجهة الهدف للتعاون مع الكائنات بما يتوافق مع الواجهة الهدف.
Adaptee: واجهة موجودة يجب تكييفها.
المحول: مسؤول عن تحويل واجهة Adaptee إلى واجهة Target. المحولات هي فئة ملموسة ، وهي جوهر هذا النمط.
تنقسم المحولات إلى نوعين: محول الفئة ومحول الكائن ، والذي سيتم وصفه بالتفصيل أدناه.
محول فئة
يشير ما يسمى محول الفئة إلى محول المحول الذي يرث محولنا Adaptee وتنفيذ هدف الواجهة الهدف. نظرًا لأنه ميراث واحد في Java ، يمكن لهذا المحول أن يخدم محول المحول الموروثة فقط. الرمز كما يلي:
تكيف
package com.bluemsun.classadapter ؛ public class person {private int id ؛ اسم السلسلة الخاصة ؛ / *** يمكن للشخص التحدث باللغة الإنجليزية الآن*/ public void saysenglish () {system.out.println ("الشخص يمكنه قول اللغة الإنجليزية!") ؛ } /*** حذف setter ، getter. */}واجهة الهدف (الهدف)
حزمة com.bluemsun.classadapter ؛/*** الهدف يتطلب أن يتمكن الشخص من التحدث باللغة الإنجليزية والفرنسية واليابانية. ولكن الآن يمكن للشخص التحدث باللغة الإنجليزية * Administrator * *//الواجهة العامة Target_Person {void saysenglish () ؛ void sayfrench () ؛ void saysjapanese () ؛}محول
حزمة com.bluemsun.classadapter ؛/*** محول الفئة ، لأنه يرث الشخص ، ويمكن أن يرث Java فقط إلى واحد ، لذلك هذا المحول يخدم فقط فئة الشخص* هذا المحول يسمح لفئة الشخص بتنفيذ الأساليب المحددة من قبل الواجهة الهدف دون تعديل رمز المصدر* Author Admody*/public Class Adapter_berson seahfrench () {system.out.println ("يمكن للشخص أن يقول الفرنسية!") ؛ } Override public void saysjapanese () {system.out.println ("يمكن لـ Person أن يقول اليابانية!") ؛ }}عميل
package com.bluemsun.classadapter ؛ اختبار الطبقة العامة {public static void main (string [] args) {target_person person = new Adapter_Person () ؛ person.sayenglish () ؛ person.sayfrench () ؛ person.sayjapanese () ؛ }}توضح الرموز القليلة المذكورة أعلاه دور محولات الطبقة. كما قلنا في البداية ، لا يمكن أن يخدم محول المحول هذا سوى فئة الشخص. في هذا الوقت ، قد تتساءل ، إذا كنت بحاجة إلى التكيف مع العديد من الفصول الدراسية ، فهل أحتاج إلى كتابة محول لكل فصل يحتاج إلى التكيف معه؟ هل هناك طريقة أكثر مرونة؟ الجواب هو: نعم! هذا هو محول الكائن الذي نتحدث عنه أدناه.
محول الكائن
يعني محول الكائن المزعوم ، ببساطة وضعه ، أن المحول ينفذ الواجهة المستهدفة لدينا ، لكنه لا يرث الفئات التي تحتاج إلى تكييفها. بدلاً من ذلك ، يتم تكييفه عن طريق تمرير مُنشئ المحول. الرمز كما يلي: (الهدف ، Adaptee نفسه كما هو مذكور)
محول
package com.bluemsun.objectdapter ؛ import com.bluemsun.classadapter.person ؛ import com.bluemsun.classadapter.target_pon شخص خاص // تمرير الشخص Adaptee Class in the Constructor Public Adapter_Person (الشخص الشخص) {this.person = person ؛ }. }. } Override public void saysjapanese () {system.out.println ("يمكن لـ Person أن يقول اليابانية!") ؛ }}عميل
package com.bluemsun.objectdapter ؛ استيراد com.bluemsun.classadapter.person ؛ استيراد com.bluemsun.classadapter.target_person ؛ اختبار الفئة العامة {public static void main (string [] args) {target_person person = adapter_person new () person.sayenglish () ؛ person.sayfrench () ؛ person.sayjapanese () ؛ }}يمكن أن تتكيف محولات الكائنات مع فئات متعددة مع التعديلات. فقط تمرير فصول مختلفة مع التعديلات في مُنشئ المحول. المرونة.
مزايا محولات الطبقة:
1. نظرًا لأن فئة المحول هي فئة فرعية لفئة المحول ، يمكن استبدال بعض أساليب المحول في فئة المحول ، مما يجعل المحول أكثر مرونة.
عيوب محولات الطبقة:
1. بالنسبة للغات مثل Java و C# التي لا تدعم الميراث المتعدد ، يمكن تكييف فئة محول واحدة على معظمها مع فئة محول واحدة على الأقل في وقت واحد ، ويمكن أن تكون الفئة المجردة المستهدفة فقط واجهة ، وليس فئة. استخدامه له قيود معينة. لا يمكن تكييفه مع فئة محول وفئاته الفرعية للواجهة الهدف في نفس الوقت.
مزايا محولات الأشياء:
1. تكييف محولات مختلفة متعددة مع نفس الهدف ، أي أن نفس المحول يمكنه تكييف كل من فئة المحول وفئاته الفرعية مع الواجهة الهدف.
عيوب محولات الكائنات:
1. مقارنة مع وضع محول الفئة ، ليس من السهل استبدال فئة المحول.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!