تعريف وضع المحول: استخدم فئتين غير متوافقين معًا ، ينتمي إلى الوضع الهيكلي ويتطلب هويتين: Adaptee (محول) ومحول (محول).
لماذا تستخدم وضع المحول
غالبًا ما نواجه فئتين غير مرتبطتين معًا. ما يجب القيام به؟
باستخدام المحول ، قم بإنشاء واجهة هجينة (هجينة) بين هاتين الواجهتين.
كيفية استخدام وضع المحول
لتنفيذ طريقة المحول ، تم ذكره في قسم "تجديد الطبقة" من "Think in Java" ، هناك طريقتان: التكوين والميراث.
لنفترض أننا نريد قيادة أكوام ، وهناك نوعان: أكوام مربعة وأكوام دائرية.
نسخة الكود كما يلي:
الفئة العامة Squarepeg {
إدراج الفراغ العام (سلسلة str) {
System.out.println ("Squarepeg insert ():"+str) ؛
}
}
الطبقة العامة مذهب مركب {
public void insertintohole (String msg) {
System.out.println ("RoundPeg insertintohole ():"+msg) ؛
}
}
يوجد الآن تطبيق يتطلب كل من أكوام مربعة وأكوام دائرية. ثم نحتاج إلى تطبيق هاتين الفئتين بشكل شامل.
نسخة الكود كما يلي:
يمتد الفئة العامة Pegadapter Squarepeg {
مذهب مركب خاص ؛
pegadapter العامة (PEG RoundPeg) (this.roundpeg = peg ؛)
إدراج الفراغ العام (String str) {RoundPeg.InsertIntOhole (str) ؛}
}
في الكود أعلاه ، ينتمي RoundPeg إلى Adaptee وهو المحول. Pegadapter هو محول ، تكييف Adaptee (محول مركب) والهدف (الهدف Squarepeg). في الواقع ، هذا تطبيق شامل لطرق التكوين والميراث.
يرث PegAdapter أولاً Squarepeg ، ثم يستخدم مزيجًا جديدًا لإنشاء طريقة الكائن ، ويقوم بإنشاء كائن RoundPeg من RoundPeg ، ثم يحمل طريقة إدراج الفئة الأصل (). من هنا ، تفهم أيضًا الفرق بين استخدام الكائنات الجديدة واستخدام الميراث لإنشاء الكائنات.
إذا كان لديك بعض الخبرة في استخدام Java ، فقد وجدت أن هذا النمط غالبًا ما يتم استخدامه.
مزيد من الاستخدام
يرث Pegadapter أعلاه Squarepeg.
نسخة الكود كما يلي:
الواجهة العامة IroundPeg {
public void insertintohole (سلسلة msg) ؛
}
الواجهة العامة isquarepeg {
إدراج الفراغ العام (سلسلة Str) ؛
}
فيما يلي المائدة المستديرة الجديدة و Squarepeg.
نسخة الكود كما يلي:
Squarepeg من الطبقة العامة تنفذ isquarepeg {
إدراج الفراغ العام (سلسلة str) {
System.out.println ("Squarepeg insert ():"+str) ؛
}
}
يدرب الطبقة العامة المركب IroundPeg {
public void insertintohole (String msg) {
System.out.println ("RoundPeg insertintohole ():"+msg) ؛
}
}
إليكم Pegadapter الجديد الذي يسمى محول ثنائي الاتجاه:
نسخة الكود كما يلي:
Pegadapter من الطبقة العامة تنفذ iroundpeg ، isquarepeg {
مذهب مركب خاص ؛
Squarepeg Squarepeg الخاص ؛
// طريقة البناء
PegAdapter العامة (RoundPeg PEG) {this.roundpeg = peg ؛}
// طريقة البناء
pegadapter العامة (Squarepeg PEG) (this.squarepeg = peg ؛)
إدراج الفراغ العام (String str) {RoundPeg.InsertIntOhole (str) ؛}
}
هناك أيضًا نوع يسمى محولات قابلة للتجميع ، والتي يمكن أن تحصل على واحدة من العديد من المحولات. باستخدام تقنية الانعكاس ، يمكنك اكتشاف الأساليب العامة في الفصول الدراسية ديناميكيًا.