Latest web development tutorials

الزوار نمط

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

مقدمة

القصد: الهيكل الرئيسي للبيانات والبيانات الفصل التلاعب.

أساسا لحل: بنية بيانات مستقرة ومتغيرة مشكلة اقتران التشغيل.

متى تستخدم: الحاجة إلى بنية الهدف من الكائنات في العديد من الإجراءات المختلفة وغير ذات صلة، ولكن هذه الإجراءات تحتاج إلى تجنب "التلوث" من فئة من هذه الكائنات، واستخدام الزوار لهذه الحزم إلى الفئة.

كيفية إصلاح: يتم الوصول إلى الطبقة داخل بالإضافة إلى استقبال الزوار الأجانب لتوفير واجهة.

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

تطبيق مثال: أنت ضيف في منزل أحد الأصدقاء، كنت زائرا، وهو صديق يقبل هذه الزيارة من خلال وصف صديقك، ثم وصف صديق لإصدار حكم، وهو نمط الزوار.

المزايا: 1، وذلك تمشيا مع مبدأ المسؤولية واحد.2، قابلية ممتازة. 3، والمرونة.

العيوب: 1، وعناصر محددة من الزوار أعلنت تفاصيل انتهاكا لمبدأ ديميتر.2، وعناصر محددة من التغيير أكثر صعوبة. 3، في انتهاك لمبدأ التبعية عكس، والاعتماد على فئة معينة التي لا تعتمد على التجريد.

سيناريوهات الاستخدام: 1، الكائن المقابلة لهيكل فئة الكائن نادرا ما يتغير، ولكن غالبا ما تحتاج إلى تعريف عملية جديدة في هذا الهيكل الكائن.2، وضرورة وجود هيكل الهدف من الكائنات في العديد من الإجراءات المختلفة وغير ذات صلة، ولكن هذه الإجراءات تحتاج إلى تجنب "التلوث" من فئة من هذه الكائنات، ونحن لا نريد لتعديل هذه الفئات عند إضافة عملية جديدة.

ملاحظة: يمكن للزوار تكون موحدة وظيفة، يمكنك القيام به التقرير، واجهة المستخدم، اعتراض والتصفية.

تحقيق

سوف نقوم بإنشاء تعريف مقبولة واجهة العمليةComputerPart.لوحة المفاتيح، الفأرة، مراقبوالحاسوبتحقيق اجهةComputerPartالطبقات الكيان. وسوف نحددComputerPartVisitorواجهةأخرى، والذييحدد نوع العملية للزوار.الكمبيوتراستخدام الزوار الكيان لاتخاذ الإجراءات المناسبة.

VisitorPatternDemo،ونحن لشرح استخدام الطبقةالحاسوب، والطبقةComputerPartVisitor للتدليل على استخدام نمط الزوار.

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

خطوة 1

تحديد واجهة التي تمثل العنصر.

ComputerPart.java

فئة واجهة العامة ComputerPart {
   الفراغ العام تقبلها (ComputerPartVisitor computerPartVisitor)؛
}

خطوة 2

إنشاء تمتد الطبقات كيان فوق الطبقة.

Keyboard.java

لوحة المفاتيح الطبقة العامة تنفذ ComputerPart {

   Override
   الفراغ العام تقبلها (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (هذا)؛
   }
}

Monitor.java

مراقب الطبقة العامة تنفذ ComputerPart {

   Override
   الفراغ العام تقبلها (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (هذا)؛
   }
}

Mouse.java

الطبقة العامة ماوس تنفذ ComputerPart {

   Override
   الفراغ العام تقبلها (ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit (هذا)؛
   }
}

Computer.java

الطبقة العامة الحاسوب ينفذ ComputerPart {
	
   ComputerPart [] أجزاء.

   الجمهور الحاسوب () {
      أجزاء = الجديدة ComputerPart [] {جديد ماوس ()، لوحة مفاتيح جديدة ()، مراقب جديد ()}؛		
   } 


   Override
   الفراغ العام تقبلها (ComputerPartVisitor computerPartVisitor) {
      ل(كثافة العمليات ط = 0؛ ط <parts.length، وأنا ++) {
         أجزاء [أنا]. قبول (computerPartVisitor)؛
      }
      computerPartVisitor.visit (هذا)؛
   }
}

خطوة 3

تحديد واجهة التمثيل الزوار.

ComputerPartVisitor.java

الواجهة العمومية ComputerPartVisitor {
	زيارة باطلة العامة (الكمبيوتر الكمبيوتر).
	زيارة باطلة العامة (الفار)؛
	زيارة باطلة العامة (لوحة المفاتيح لوحة المفاتيح)؛
	زيارة باطلة العامة (رصد مراقب)؛
}

خطوة 4

خلق آخر الكيان لتحقيق الدرجة المذكورة أعلاه.

ComputerPartDisplayVisitor.java

الطبقة العامة ComputerPartDisplayVisitor تنفذ ComputerPartVisitor {

   Override
   زيارة باطلة العامة (الكمبيوتر الكمبيوتر) {
      System.out.println ( "عرض الحاسوب.")؛
   }

   Override
   زيارة باطلة العامة (الفار) {
      System.out.println ( "عرض ماوس.")؛
   }

   Override
   زيارة الفراغ العام (لوحة المفاتيح لوحة المفاتيح) {
      System.out.println ( "عرض لوحة المفاتيح.")؛
   }

   Override
   زيارة الفراغ العام (رصد مراقب) {
      System.out.println ( "عرض مراقب.")؛
   }
}

خطوة 5

استخدامComputerPartDisplayVisitorلإظهار جزء منالحاسوب.

VisitorPatternDemo.java

الطبقة العامة VisitorPatternDemo {
   (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية {

      ComputerPart الكمبيوتر = الحاسوب الجديد ()؛
      computer.accept (ComputerPartDisplayVisitor الجديدة ())؛
   }
}

خطوة 6

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

عرض ماوس.
عرض لوحة المفاتيح.
عرض مراقب.
عرض الحاسوب.