وضع تكرارية
وضع تكرارية (مكرر نمط) جافا وصافي بيئة البرمجة هو نمط تصميم شائع جدا. يستخدم هذا الوضع لعناصر الوصول التسلسلي من مجموعة من الكائنات، مجموعة من الكائنات لا تحتاج إلى معرفة التمثيل الأساسي.
نمط مكرر ينتمي الأنماط السلوكية.
مقدمة
القصد: توفير وسيلة للوصول إلى كائن في كل عنصر من عناصر البلمرة، ولكن لا داعي لفضح الداخلية للكائن.
أساسا لحل: طريقة مختلفة لاجتياز الكائن التكامل بأكمله.
متى تستخدم: عبور كائن البوليمر.
كيفية إصلاح: المشي بين عناصر من مسؤولية المكررات بدلا من الكائنات الإجمالية.
رمز مفتاح: تحديد واجهة: hasNext، المقبل.
أمثلة التطبيق: JAVA في مكرر.
المزايا: 1، والذي يدعم طريقة مختلفة لاجتياز كائن الكلي.2، وتبسيط الطبقة البلمرة مكرر. 3، في نفس البلمرة يمكن أن يكون اجتياز متعددة. 4، في وضع تكرارية، إضافة فئة جديدة من فئة مكرر البوليمرية وسهلة، وبدون تعديل رمز الأصلي.
العيوب: نظرا لفصل الواجبات مكرر تخزين البيانات نمط والبيانات اجتياز، إضافة فئات مجمعة جديدة تتطلب زيادة مقابلة في الدرجة مكرر جديدة، وعدد من الدرجة زيادات أزواج، مما يزيد من تعقيد النظام إلى حد ما.
سيناريوهات الاستخدام: 1، والوصول إلى كائن المحتوى البوليمر دون الحاجة لفضح التمثيل الداخلي.2، والحاجة إلى توفير مجموعة متنوعة من اجمالي أسلوب كائن اجتياز. 3 لعبور الهيكل الكلي مختلفة يوفر واجهة موحدة.
ملاحظات: يتم فصل وضع تكرارية السلوك اجتياز مجموعة من الكائنات، مجردة من الدرجة مكرر ليكون مسؤولا، بحيث يمكن القيام به على حد سواء دون التعرض إلى الهيكل الداخلي للمجموعة، ولكن أيضا السماح رمز وصول شفاف خارجي لجمع البيانات الداخلية.
تحقيق
سنقوم إنشاء واجهة السردمكرروطريقة التنقل إرجاع مكرر واجهةالحاويات.تنفذ الطبقة كيانالحاوياتفإن واجهة يكون مسؤولا عن تنفيذواجهة مكرر.
IteratorPatternDemo، واستخدامالطبقات مظاهرة لدينا الطبقة كيان لطباعةNamesRepositoryNamesRepository المخزنة على جمعالأسماء.
خطوة 1
إنشاء واجهة.
Iterator.java
الواجهة العمومية مكرر { hasNext منطقية العامة ()؛ كائن العام المقبل ()؛ }
Container.java
الواجهة العمومية الحاويات { الجمهور مكرر getIterator ()؛ }
خطوة 2
تنفذ إنشاء فئة كيانالحاوياتواجهة. لقد أدركت هذه الفئةNameIteratorمكرر اجهة الطبقة الداخلية.
NameRepository.java
الطبقة العامة NameRepository تنفذ الحاويات { أسماء سلسلة العامة [] = { "روبرت"، "جون"، "جولي"، "لورا"}؛ Override الجمهور مكرر getIterator () { العودة NameIterator الجديدة ()؛ } NameIterator الدرجة الخاصة بتنفيذ مكرر { مؤشر كثافة العمليات. Override hasNext منطقية العامة () { إذا (مؤشر <names.length) { العودة الحقيقية. } عودة كاذبة. } Override كائن العام المقبل () { إذا (this.hasNext ()) { عودة أسماء [مؤشر ++]. } العودة فارغة؛ } } }
خطوة 3
استخدامNameRepositoryللحصول على التكرارات، وطباعة الأسماء.
IteratorPatternDemo.java
الطبقة العامة IteratorPatternDemo { (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية { NameRepository namesRepository = NameRepository الجديدة ()؛ ل(مكرر ايتر = namesRepository.getIterator ()؛ iter.hasNext ()؛) { اسم سلسلة = (سلسلة) iter.next ()؛ System.out.println ( "الاسم:" + اسم)؛ } } }
خطوة 4
تحقق من الانتاج.
الاسم: روبرت الاسم: جون الاسم: جولي الاسم: لورا