【نص】
نحن نعلم أن أهم وأصعب التحكم في واجهة المستخدم في Android هو التحكم في قائمة ListView. إذا كنت ترغب في استخدامه بمرونة ، فيجب عليك استخدام محول المحول. لذلك ، أعتقد أنه لا يزال من الضروري تعلم وضع المحول في Java (بغض النظر عما إذا كان يمكن استخدامه في المستقبل). بعد كل شيء ، لغة Java هي أساس مهم للغاية لتطوير Android.
لفهم وضع المحول بشكل كامل ، هناك الكثير من المعرفة للتعلم ، على سبيل المثال: يحتوي وضع المحول على نموذجين مختلفين: وضع المحول للفئة وطريقة المحول للكائن. لكن كمبتدئين ، سأتعلم ببساطة المعرفة التمهيدية لوضع التنسيق ، وسأواصل تحسينه في المستقبل. آمل ألا تشكو أحذية الأطفال الذين يكافحون على الطريق إلى الترميز → _ →
1. محول مقدمة
• قم بتحويل واجهة فئة إلى واجهة أخرى يريدها العميل. يتيح وضع المحول الفصول التي لم تتمكن في الأصل من العمل معًا بسبب عدم توافق الواجهات للعمل معًا.
• وضع المحول شائع الاستخدام في أطر عمل Java الحديثة. هذا النمط مناسب للسيناريوهات التالية: تريد استخدام فئة موجودة ، لكن الفصل لا يفي بمتطلبات الواجهة ؛ أو تحتاج إلى إنشاء فئة قابلة لإعادة الاستخدام تتكيف مع فئات أخرى لا توفر واجهة مناسبة.
2. أمثلة على التفاح والبرتقال
يمكن توضيح فكرة المحول من خلال المثال البسيط التالي. هذا المثال هو جعل البرتقالي "تكيف" في تفاحة. كما هو مبين في الشكل أدناه:
كما ترون في النصف السفلي من الصورة أعلاه ، يحتوي المحول على مثيل برتقالي ويرث فئة Apple. يتم وضع الكائن البرتقالي في المحول ، وبالتالي فإن البرتقال يعمل مثل التفاحة. الرسم البياني المنطقي المقابل هو كما يلي:
3. أمثلة على سدادات صندوق المقبس
في الشكل أعلاه ، يمكننا توصيل القابس على المقبس الأيسر بنجاح من خلال المحول الأوسط.
4. تنفيذ رمز محول المكونات
/** وضع المحول (محول): يحول واجهة فئة إلى واجهة أخرى يريدها العميل. يتيح وضع المحول الفصول التي لم تتمكن في الأصل من العمل معًا بسبب عدم توافق الواجهات للعمل معًا. */class adapterdemo {public static void main (string [] args) {// power a تبدأ powera powera = new poweraimpl () ؛ ابدأ (powera) ؛ powerb powerb = new powerbimpl () ؛ PowerAadapter PA = New PoweraAdapter (PowerB) ؛ ابدأ (PA) ؛ } // طريقة التعريف: Powera Works public static void start (powera powera) {system.out.println (".... بعض رمز مكرر ......") ؛ powera.insert () ؛ System.out.println ("... بعض الكود المكررة .../n") ؛ } /** start static void start (powerb powerb) {system.out.println ("... بعض الكود المكررة ......") ؛ powerb.connect () ؛ System.out.println ("... بعض الكود المكررة ......") ؛ } */} // تحديد فئة المحول فئة poweraadapter تنفذ powera {powerb powerb powerb ؛ // واجهة لتكييف poweraadapter العامة (powerb powerb) {this.powerb = powerb ؛ } // تنفيذ الواجهة powera ، يجب عليك تنفيذ الأساليب في powera public void insert () {powerb.connect () ؛ }}/** Power A Interface*/Interface powera {public void insert () ؛} class poweraimpl تنفذ powera {public void insert () {system.out.println ("تم إدخال واجهة القوة ، ابدأ العمل") ؛ }}/** power b واجهة*/واجهة powerb {public void connect () ؛} class powerbimpl تنفذ powerb {public void connect () {system.out.println ("power b واجهة ، ابدأ العمل") ؛ }} في هذا المثال ، نريد PowerB أن يتصل بالرمز في طريقة Start () في Powera ؛ بالطبع ، لا نريد تكرار سطر الرمز 23 أو 25 سطرًا. في هذا الوقت ، يمكنك استخدام وضع المحول.
شرح الرمز أعلاه:
السطر 30: ابدأ في تحديد المحول ، وهو أيضًا بداية الكود الأساسي ؛
الخطوط 33 و 34: تمرير PowerB من خلال طريقة البناء ؛
رمز السطر 37: نظرًا لأنه هو تنفيذ واجهة Powera ، فمن الضروري تنفيذ الطريقة إدراج () في Powera ؛
رمز السطر 38: نسمي طريقة PowerB's Connect () في طريقة إدراج () Powera ؛
بعد ذلك مباشرة ، يعني السطر 10 و 11 و 12 من الكود: عندما نمرر PowerB جديد ، نقوم بتمريره إلى محول PowerAadapter ، وبدء المحول ، ثم يقوم PowerB بتنفيذ الكود في السطور 16 و 24 و 18.
ملاحظة: إن ترتيب 16 و 24 و 18 ليس خطأ ، لأنه في المحول ، استبدلنا 24 سطرًا من الكود بالسطر 17.
تأثير العملية على النحو التالي:
وبالمثل ، إذا كنت أرغب أيضًا في استخدام Powera كـ PowerB ، فيمكنني تحديد محول آخر PowerBadapter لتنفيذ محول ثنائي الاتجاه.
5. ملخص
يشير الرمز المعلق في الأسواق 23 و 25 أعلاه إلى أنه كثير من التعليمات البرمجية المكررة ولا يتوافق مع التفكير الموجهة للكائنات. نحن الآن نتصور مثالًا على أن مشروعنا عبر الإنترنت ويستخدمه العملاء ، ولكن تمت إضافة بعض الطلب الجديد. هناك مبدأ OO للكائنات الموجهة للكائنات: أغلق التعديل (بعد الاتصال بالإنترنت ، وحاول عدم تعديل الكود ، وإلا فقد يحدث رد فعل السلسلة ، مما يؤدي إلى مشاكل في الرموز الأخرى التي تدعو هذه الطريقة) ، ومفتوحة للامتدادات (طرق جديدة محددة من قبل نفسك ، والتي لم يطلق عليها الآخرون حتى الآن بالطبع يمكننا تعديلها). في هذه المرحلة ، يمكننا تقليل هذه التعليمات البرمجية المكررة من خلال المحولات.
6. مبادئ تصميم OO
• البرمجة الموجهة نحو الواجهة (برمجة موجهة نحو التجريد)
• تغييرات الحزمة
• استخدم المزيد من المجموعات ، واستخدم ميراث أقل
• قريبة من التعديلات لفتحها على الامتدادات
شخصيا ، يجب أن تتعمق مبادئ التصميم هذه بشكل مستمر في الممارسة العملية ، لذلك لن أصفها هنا كثيرًا ~
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.