وضع المحول
يسمى تعريف نمط المحول (الإنجليزية: نمط المحول) أحيانًا نمط التغليف أو العبوة. نقل واجهة فئة إلى ما يتوقعه المستخدم. التكيف يجعل الفصول الدراسية التي لا يمكن أن تعمل معًا بسبب عدم توافق الواجهة.
هناك نوعان من أوضاع المحول:
1. وضع محول الكائن - يلبي محول الكائن واجهة توقع المستخدم من خلال الارتباط ، ويقلل أيضًا من الاقتران السيئ بين الرموز. يوصى باستخدام "تكييف الكائن" في عملك.
2. وضع محول الفئة - في وضع المحول هذا ، يرث المحول فئاته التي تم تنفيذها (عادةً ما تكون ميراث متعددة). لا يوجد ميراث متعدد في جافا ، لذلك لن أقدمه هنا.
ينجز
1. الهدف - يحدد الطريقة التي يحتاج العميل إلى استخدامها.
2. محول - ورث أو تنفيذ الهدف والتكيف مع أساليب Adaptee للاستهداف.
3. Adaptee - تحديد طريقة موجودة.
4. عميل - طرق الاتصال في الهدف.
الفئة العامة Adaptee {public void seventrequest () {system.out.println ("Hello ، أنا من Adaptee!") ؛ }} هدف الواجهة العامة {public void request () ؛ } محول الفئة العامة ينفذ الهدف {Adaptee Adaptee ؛ المحول العام () {Adaptee = new Adaptee () ؛ } request public void () {Adaptee.specificRequest () ؛ }} client client {public static void main (string [] args) {target target = new Adapter () ؛ target.request () ؛ }}لتنفيذ نمط محول الفئة ، نحتاج إلى محول لورث Adaptee.
السيناريوهات المعمول بها
1. إذا كنت ترغب في استخدام فئة قديمة ولا تلبي الواجهة احتياجاتك ، فيمكنك استخدام فئة المحول كفئة الوساطة.
2. تريد إنشاء فئة للأغراض العامة التي يمكن أن تسمي بعض واجهات الفئات غير ذات الصلة لك لاستخدامها.
وضع الجسر
الدافع في بعض الأحيان ، يجب أن يكون للملخص تطبيقات مختلفة. على سبيل المثال ، هناك طريقتان لحفظ البيانات ، واحدة هي طريقة الملف والآخر هو طريقة قاعدة البيانات. الممارسة المعتادة هي أن ترث الفصل الذي يحفظ البيانات ثم تنفيذ طرق مختلفة لحفظ البيانات. المشكلة في ذلك هي أنه من الصعب تعديل طريقة حفظ وتوسيع نطاقها ، ولا يمكن تبديل طريقة حفظ في وقت التشغيل.
يعد تحديد نمط الجسر أحد أكثر الأنماط تعقيدًا في نمط تصميم البرامج ، والذي يفصل الأجزاء المجردة من الأشياء عن أجزاء التنفيذ الخاصة به حتى يتمكنوا جميعًا من التغيير بشكل مستقل.
على سبيل المثال ، يتم تصنيف "Circle" و "Triangle" تحت "الشكل" التجريدي ، بينما يتم تصنيف "Drawing Circle" و "Drawing Triangle" ضمن فئة "الرسم" التي تدرك السلوك ، ثم "الرسم" يسمى "الشكل".
1. الملخص - تحديد الأساليب التجريدية.
2. الملخص - استخدام واجهة التنفيذ لتنفيذ أساليب مجردة.
3. المنفذ - يحدد واجهات لسلوكيات التنفيذ المحددة.
4.
/ ** "APPERADOR"*/ interface drawingapi {public void drawCircle (double x ، double y ، double divius) ؛ }/** "ConcreteImplementor" 1/2*/class drawing reclurements drawingapi {public void drawCircle (double x ، double y ، double divius) {system.out.printf ("api1.circle at ٪ f: ٪ f radius ٪ f/n" ، x ، y ، radius) ؛ }}/** "ConcreteImplementor" 2/2*/class drawing drawing drawingapi {public void drawCircle (double x ، double y ، double radius) {system.out.printf ("API2.Circle at ٪ f: ٪ f radius ٪ f/n" ، y ، y ، radius) ؛ }} / ** "التجريد"* / واجهة شكل {public void draw () ؛ // ResizeByPerCenage منخفض المستوى (PCT مزدوج) ؛ // على المستوى العالي}/ ** "التجريد المكرر"*/ class circleshape ينفذ شكل {private double x ، y ، radius ؛ رسم خاص Drawingapi ؛ circleshape العامة (double x ، double y ، نصف قطر مزدوج ، drawingapi drawingapi) {this.x = x ؛ this.y = y ؛ this.radius = نصف القطر ؛ this.drawingapi = drawingapi ؛ }. } // عالي المستوى IE التجريدي المحدد public void ResizeByperCenge (pct double) {radius *= pct ؛ }} / ** "Client"* / class bridgepattern {public static void main (string [] args) {form [] الأشكال = شكل جديد [2] ؛ الأشكال [0] = circleshape جديد (1 ، 2 ، 3 ، جديد drawingApi1 ()) ؛ الأشكال [1] = circleshape جديد (5 ، 7 ، 11 ، جديد drawingApi2 ()) ؛ لـ (شكل الشكل: الأشكال) {lape.ResizeByPerCenage (2.5) ؛ شكل. draw () ؛ }}} مثال
1. حفظ البيانات المذكورة في الدافع.
2. إطار رسم الرسومات. على غرار التنفيذ في الكود أعلاه.
السيناريوهات المعمول بها
1. لا تريد أن يكون للتجريد والتنفيذ علاقة ثابتة ، لكنك تأمل أن يتم تعديل التنفيذ في وقت التشغيل.
2. يمكن توسيع أجزاء التجريد والتنفيذ بشكل مستقل دون التأثير على بعضها البعض.