Latest web development tutorials

محول نموذج

وضع محول (محول نمط) كجسر بين اثنين من واجهات غير متوافقة. هذا النوع من أنماط التصميم تنتمي النموذج الهيكلي، الذي يجمع بين ميزات اثنين من واجهات منفصلة.

ويتضمن هذا النموذج فئة واحدة هي المسؤولة عن وظائف واجهة تتعارض مستقلة أو الانضمام. على سبيل المثال من واقع الحياة، وقارئ بطاقة الذاكرة محول الكمبيوتر المحمول وبين. بطاقة الذاكرة الخاصة بك في القارئ، ثم القارئ في دفتر الملاحظات، حتى أن بطاقة ذاكرة يمكن قراءتها من خلال دفتر الملاحظات.

ونحن لشرح استخدام وضع محول من الأمثلة التالية. حيث يمكن للجهاز مشغل الصوت فقط لعب ملفات MP3 للعب إل سي و MP4 الملفات باستخدام مشغل صوتي أكثر تقدما.

مقدمة

النية: لتحويل واجهة من فئة إلى واجهة أخرى يتوقع العملاء.نمط محول يجعل تلك الفئات خلاف ذلك بسبب واجهات تتعارض لا يمكن أن تعمل معا للعمل معا.

أساسا لحل: الحل الأساسي في نظام البرمجيات، في كثير من الأحيان إلى بعض "كائن موجود" في بيئة جديدة، والمتطلبات البيئية الجديدة واجهة هو الآن كائن لا يمكن أن تتحقق.

متى تستخدم: 1، والنظام يتطلب استخدام فئة القائمة، وهذه واجهات لا تلبي احتياجات النظام.2، تريد إنشاء فئة يمكن إعادة استخدامها ل، بما في ذلك بعض قد عمل مع بعض الطبقات لا يرتبط كثيرا مع بعضها البعض في مقدمة مستقبلي للطبقة، هذه الفئات ليس بالضرورة واجهة المصدر نفسه. 3، من خلال تحويل واجهة، فئة إلى فئة أخرى خطوط. (مثل النمور والطيور، والآن أكثر من النمر، دون زيادة الكيانات الطلب تحت محول إضافي، التي نمر الأجسام شاملة وتنفيذ واجهة الطاير.)

كيفية إصلاح: ورثت أو الاعتماد (مستحسن).

رمز رئيسية: الميراث محول أو تعتمد كائنات موجودة بالفعل لتحقيق الهدف المنشود واجهة.

أمثلة التطبيق: 1، والولايات المتحدة الأمريكية الكهربائية 110V، 220V الصين، يجب أن يكون هناك محول 110V إلى 220V.2، جافا JDK 1.1 يوفر واجهة التعداد ويوفر واجهة مكرر في 1.2، كنت ترغب في استخدام 1.2 جدك، قبل النظام سوف يتعين تحويلها إلى تعداد واجهة واجهة مكرر، فإنك بحاجة إلى نمط محول. 3، تشغيل البرنامج على ويندوز لينكس. 4، JAVA في جدبك.

المزايا: 1، يمكن أن تجعل أي نوع من المدى بين اثنين لا علاقة لها.2، وتحسين إعادة استخدام الطبقة. 3، وزيادة الشفافية في الصف. 4، ومرونة جيدة.

العيوب: 1، والاستخدام المفرط للمحول، مما يجعل من نظام فوضوي جدا ويصعب فهم ككل.على سبيل المثال، كانت هناك مكالمة ورؤيتها بوضوح واجهة، في الواقع، يمكن تكييفها لتحقيق اجهة داخلية B أصبح النظام إذا حدث ذلك كثيرا، هو بمثابة كارثة. إذا كان الأمر كذلك فإنه ليس من الضروري، لا يمكنك استخدام محول، ولكن مباشرة إلى نظام إعادة بنائها. 2. وكما في معظم جافا ترث فئة، وذلك في أفضل التكيف التكيف فئة، ويجب أن تستهدف الفئة هي فئة مجردة.

سيناريوهات الاستخدام: هناك الدافع لتعديل التشغيل العادي واجهة للنظام، ثم عليك أن تنظر في استخدام وضع المحول.

ملاحظة: لم يتم إضافة محولعند التصميم التفصيلي، لكن من أجل حل المشكلة في المشاريع الخدمية.

تحقيق

لدينا واجهةالوسائط الإعلامية،وإدراك واجهةAudioPlayerالوسائط الإعلامية الطبقة الكيان. بشكلافتراضي،يمكن AudioPlayer تشغيل MP3 تنسيق ملف الصوت.

لدينا أيضاAdvancedMediaPlayerواجهة أخرى والطبقات كيان تنفيذهاAdvancedMediaPlayerاجهة. هذه الفئة يمكن أن تلعب إل سي ملف و MP4.

نحن نريد أن نجعلAudioPlayerتشغيل الملفات الصوتية إلى صيغ أخرى. ولتحقيق ذلك، نحن بحاجة إلى إنشاء فئة محول تنفذ واجهةMediaAdapterالوسائط الإعلامية واستخدام الكائنAdvancedMediaPlayerللعب التنسيق المطلوب.

AudioPlayerباستخدام فئة محولMediaAdapterنقل نوع الصوت المطلوب، لا تحتاج إلى معرفة شكل من الدرجة الفعلية يمكن أن تلعب الاحتياجات السمعية.AdapterPatternDemo، والطبقاتمظاهرة لدينا باستخدام الدرجةAudioPlayerللعب مجموعة متنوعة من الأشكال.

نمط محول UML الرسم البياني

خطوة 1

لاعبين وأكثر تقدما لاعب وسائل الاعلام لخلق واجهة لوسائل الإعلام.

MediaPlayer.java

الواجهة العمومية الوسائط الإعلامية {
   مسرحية باطلة العامة (سلسلة audioType، سلسلة اسم الملف)؛
}

AdvancedMediaPlayer.java

الواجهة العمومية AdvancedMediaPlayer {	
   الجمهور الفراغ playVlc (سلسلة اسم الملف)؛
   playMp4 الفراغ الجمهور (سلسلة اسم الملف)؛
}

خطوة 2

إنشاء فصول كيان أدرك اجهةAdvancedMediaPlayer.

VlcPlayer.java

الطبقة العامة VlcPlayer تنفذ AdvancedMediaPlayer {
   Override
   الفراغ playVlc الجمهور (سلسلة اسم الملف) {
      System.out.println ( "اللعب VLC اسم ملف :." + اسم الملف)؛		
   }

   Override
   playMp4 الفراغ الجمهور (اسم سلسلة) {
      // لا تفعل شيئا}
}

Mp4Player.java

الطبقة العامة Mp4Player تنفذ AdvancedMediaPlayer {

   Override
   الفراغ playVlc الجمهور (سلسلة اسم الملف) {
      // لا تفعل شيئا}

   Override
   playMp4 الفراغ الجمهور (اسم سلسلة) {
      System.out.println ( "اللعب اسم ملف MP4 :." + اسم الملف)؛		
   }
}

خطوة 3

إنشاء فئةالوسائط الإعلاميةتنفذ محول واجهة.

MediaAdapter.java

الطبقة العامة MediaAdapter تنفذ الوسائط الإعلامية {

   AdvancedMediaPlayer advancedMusicPlayer.

   الجمهور MediaAdapter (سلسلة audioType) {
      إذا (audioType.equalsIgnoreCase ( "إل سي")) {
         advancedMusicPlayer = VlcPlayer الجديدة ()؛			
      } آخر إذا (audioType.equalsIgnoreCase ( "MP4")) {
         advancedMusicPlayer = Mp4Player جديد ()؛
      }	
   }

   Override
   مسرحية باطلة العامة (سلسلة audioType، سلسلة اسم الملف) {
      إذا (audioType.equalsIgnoreCase ( "إل سي")) {
         advancedMusicPlayer.playVlc (اسم الملف)؛
      } آخر إذا (audioType.equalsIgnoreCase ( "MP4")) {
         advancedMusicPlayer.playMp4 (اسم الملف)؛
      }
   }
}

خطوة 4

إنشاء فصول كيان أدرك اجهةالوسائط الإعلامية.

AudioPlayer.java

الطبقة العامة AudioPlayer تنفذ الوسائط الإعلامية {
   MediaAdapter mediaAdapter. 

   Override
   مسرحية باطلة العامة (سلسلة audioType، سلسلة اسم الملف) {		

      // تشغيل ملفات الموسيقى MP3، الذي بني في الدعم إذا (audioType.equalsIgnoreCase ( "MP3")) {
         System.out.println ( "اللعب اسم ملف MP3 :." + اسم الملف)؛			
      } 
      // MediaAdapter يوفر لعب صيغ الملفات الأخرى التي تدعمها الا اذا (audioType.equalsIgnoreCase ( "إل سي") 
         || AudioType.equalsIgnoreCase ( "MP4")) {
         mediaAdapter = MediaAdapter الجديدة (audioType)؛
         mediaAdapter.play (audioType، اسم الملف)؛
      }
      آخر {
         System.out.println ( "وسائل الإعلام غير صحيحة." +
            audioType + "شكل غير معتمدة")؛
      }
   }   
}

خطوة 5

AudioPlayer استخدامها لتشغيل أنواع مختلفة من صيغ الصوت.

AdapterPatternDemo.java

الطبقة العامة AdapterPatternDemo {
   (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية {
      AudioPlayer audioPlayer = AudioPlayer جديد ()؛

      audioPlayer.play ( "MP3"، "ما وراء horizon.mp3")؛
      audioPlayer.play ( "MP4"، "alone.mp4")؛
      audioPlayer.play ( "إل سي"، "حتى الآن away.vlc")؛
      audioPlayer.play ( "افي"، "me.avi العقل")؛
   }
}

خطوة 6

تحقق من الانتاج.

لعب اسم ملف MP3 :. ما وراء horizon.mp3
لعب mp4 لاسم الملف :. Alone.mp4
لعب VLC اسم ملف :. الأقصى away.vlc الآن
وسائل الإعلام غير صحيحة. افي الشكل غير معتمد