التعريف: يوفر طريقة للوصول إلى عناصر مختلفة في كائن حاوية دون تعريض التفاصيل الداخلية للكائن.
النوع: نمط سلوكي
مخطط الفصل:
إذا كنت تريد أن تسأل عن الوضع الأكثر استخدامًا في Java ، فإن الإجابة ليست هي وضع Singleton ، ولا وضع المصنع ، ولا وضع الإستراتيجية ، ولكن وضع التكرار.
print print static print (collection) {iterator it = coll.iterator () تتمثل وظيفة هذه الطريقة في طباعة حلقة مجموعة السلسلة ، ويتم استخدام نمط التكرار في نمط التكرار. عندما يتعلق الأمر بالتكرار ، فإنه يرتبط بمجموعات مجموعات.
هيكل نمط التكرار
حاوية مجردة: بشكل عام ، يتم توفير طريقة ITerator () ، مثل واجهة التجميع ، واجهة القائمة ، واجهة تعيين ، إلخ. في Java.
حاوية محددة: إنها فئة التنفيذ الملموسة للحاويات التجريدية ، مثل القائمة المطلوبة لواجهة القائمة لتنفيذ ArrayList ، القائمة المرتبطة بواجهة القائمة لتطبيق LinkList ، قائمة التجزئة بواجهة SET لتطبيق Hashset ، وما إلى ذلك.
التكرار التجريدي: حدد الطريقة المطلوبة لاجتياز العناصر.
تنفيذ ITERATOR: ينفذ الطرق المحددة في واجهة ITERATAR لإكمال تكرار المجموعة.
إعطاء مثال
نظرًا لأن لوائح وضع التكرار نفسه فضفاض نسبيًا ، فإن التنفيذ المحدد متنوع. دعنا نقدم مثالًا واحدًا فقط هنا ، ولا يمكننا تقديم طرق التنفيذ واحدة تلو الأخرى. لذلك ، قبل إعطاء مثال ، دعنا ندرج طرق التنفيذ لنمط Iterator التالي.
1. يحدد دور التكرار واجهة اجتياز ، لكنه لا يحدد من يتحكم في التكرار. في تطبيق Java Collection ، يتم التحكم في عملية اجتياز برنامج العميل ، والتي تسمى تكرار خارجي ؛ المتكررون الخارجيون مرونون وقويون من المتكررين الداخليين ، والتكرار الداخليين ضعيفون للغاية في بيئة لغة جافا.
2. لا يوجد أي حكم لمن يقوم بتنفيذ خوارزمية اجتياز في وضع Iterator. يبدو أنه من الطبيعي أن تنفذ في دور التكرار. نظرًا لأنها مريحة لخوارزميات اجتياز مختلفة لاستخدامها على حاوية ، فهي مريحة أيضًا لتطبيق خوارزمية اجتياز على حاويات مختلفة. لكن هذا يدمر تغليف الحاوية - يجب أن يكشف دور الحاوية عن سماته الخاصة ، مما يعني في Java تعريض سماتها الخاصة إلى فئات أخرى.
ثم دعونا نضعها في دور الحاوية لتنفيذها. وبهذه الطريقة ، يتم تجاوز دور التكرار لتخزين وظيفة تعبر الموقع الحالي فقط. لكن خوارزمية اجتياز ترتبط ارتباطًا وثيقًا بحاوية معينة.
في تطبيق مجموعة Java ، فإن دور ITerator المحدد المقدم هو الفئة الداخلية المحددة في دور الحاوية. هذا يحمي عبوة الحاوية. ولكن في الوقت نفسه ، توفر الحاوية أيضًا واجهة خوارزمية اجتياز ، ويمكنك تمديد التكرار الخاص بك.
حسنًا ، دعنا نلقي نظرة على كيفية تنفيذ مجموعة التكرار في Java.
// دور ITerator ، يحدد فقط الواجهة العامة iterator {boolean hasnext () ؛ إنها مجرد واجهة ، لذلك لن يتم سردها. لتسليط الضوء على النقاط الرئيسية ، نشير إلى المحتوى المتعلق بـ ITerator // يتم اشتقاق دور التكرار المحدد في شكل فئة داخلية. موجز قائمة لاستخراج الأجزاء المشتركة من كل دور حاوية محدد. يمتد القائمة المجردة المجردة على قائمة AbstractCollection {.../ } الكائن العام التالي () { checkformory () this.remove (Lastret) ؛ المؤشر-أما بالنسبة لاستخدام وضع التكرار. كما هو مدرج في المقدمة ، يحتاج برنامج العميل إلى الحصول على دور الحاوية المحدد أولاً ، ثم الحصول على دور التكرار المحدد من خلال دور الحاوية المحدد. بهذه الطريقة ، يمكنك استخدام دور التكرار المحدد لاجتياز الحاوية ...
إيجابيات وسلبيات وضع التكرار
مزايا وضع التكرار هي:
لقد تم تبسيط طريقة التجارة ، ولا يزال الأمر مزعجًا تمامًا في مجموعة الكائنات أو القوائم المطلوبة. بعد تقديم طريقة التكرار ، من الأسهل بكثير استخدام المستخدمين.
هناك العديد من الطرق لاجتيازها ، مثل القوائم المطلوبة ، يمكننا تزويد اثنين من التكرار بترتيب إيجابي وتجاوز العكس وفقًا للاحتياجات.
التغليف جيد ، ويحتاج المستخدمون فقط إلى الحصول على جهاز تكرار لاجتيازه ، لكن لا داعي للقلق بشأن خوارزميات التجوال.
عيوب نمط Iterator:
بالنسبة للتمريرات البسيطة (مثل المصفوفات أو القوائم المطلوبة) ، من المهم استخدام التكرار ، وقد يشعر الجميع أنه ، مثل ArrayList ، نفضل استخدام الحلقات والحصول على طرق لاجتياز المجموعة.
السيناريوهات المعمول بها لوضع التكرار
نمط التكرار التكافلي والموت مع المجموعة. إذا كنا نريد تنفيذ هذه الحاوية الجديدة ، بالطبع ، نحتاج أيضًا إلى تقديم نمط Iterator لتنفيذ جهاز التكرار لحاويةنا.
ومع ذلك ، نظرًا لأن العلاقة بين الحاويات والمتكررات قريبة جدًا ، فإن معظم اللغات توفر التكرار عند تنفيذ الحاويات ، ويمكن أن تلبي هذه اللغات احتياجاتنا في معظم الحالات.