โหมดซ้ำแล้วซ้ำอีก
โหมดซ้ำ (Iterator แบบ) สภาพแวดล้อม Java NET และการเขียนโปรแกรมเป็นรูปแบบการออกแบบที่พบบ่อยมาก โหมดนี้จะใช้สำหรับการเข้าถึงลำดับองค์ประกอบของคอลเลกชันของวัตถุคอลเลกชันของวัตถุที่ไม่จำเป็นต้องรู้ว่าการแสดงต้นแบบ
รูปแบบ Iterator เป็นรูปแบบพฤติกรรม
การแนะนำ
เจตนา: เป็นวิธีการเข้าถึงวัตถุในองค์ประกอบของพอลิเมอแต่ละ แต่ไม่จำเป็นต้องเปิดเผยการตกแต่งภายในของวัตถุ
เป็นหลักในการแก้ปัญหา: เป็นวิธีที่แตกต่างกันในการสำรวจวัตถุบูรณาการทั้งหมด
เมื่อใช้: ภายในวัตถุพอลิเมอ
วิธีการแก้ไข: เดินระหว่างองค์ประกอบของความรับผิดชอบที่จะ iterators แทนของวัตถุรวม
รหัสสำคัญ: กำหนดอินเตอร์เฟซ: hasNext ต่อไป
ตัวอย่างการใช้งาน: JAVA ในการทำซ้ำโดย
ข้อดี: 1 ซึ่งสนับสนุนวิธีที่แตกต่างในการสำรวจวัตถุรวม2, การลดความซับซ้อนพอลิเมอระดับการทำซ้ำโดย 3 ในพอลิเมอเดียวกันสามารถมีการสำรวจเส้นทางหลาย 4 ในโหมดซ้ำเพิ่มคลาสใหม่ของชั้น iterator พอลิเมอและใช้งานง่ายโดยไม่ต้องแก้ไขรหัสเดิม
ข้อเสีย: เนื่องจากการแยกการจัดเก็บอากรขา iterator รูปแบบข้อมูลและทราเวิร์เพิ่มชั้นเรียนที่รวบรวมใหม่จำเป็นต้องมีการเพิ่มขึ้นสอดคล้องกันในชั้นเรียน iterator ใหม่จำนวนชั้นคู่เพิ่มขึ้นซึ่งจะเป็นการเพิ่มความซับซ้อนของระบบที่มีขอบเขต
สถานการณ์การใช้งาน: 1, การเข้าถึงวัตถุเนื้อหาพอลิเมอได้โดยไม่ต้องเปิดเผยการแสดงภายในของมัน2 จำเป็นที่จะต้องให้ความหลากหลายของวิธีการข้ามผ่านวัตถุรวม 3 ภายในโครงสร้างที่แตกต่างกันรวมมีอินเตอร์เฟซแบบครบวงจร
หมายเหตุ: โหมดซ้ำจะถูกแยกออกสำรวจเส้นทางพฤติกรรมของคอลเลกชันของวัตถุนามธรรมคลาส iterator จะต้องรับผิดชอบเพื่อให้ทั้งสองสามารถทำได้โดยไม่ต้องสัมผัสกับโครงสร้างภายในของคอลเลกชัน แต่ยังปล่อยให้รหัสการเข้าถึงโปร่งใสภายนอกเพื่อเก็บรวบรวมข้อมูลภายใน
การสำนึก
เราจะสร้างอินเตอร์เฟซที่เล่าเรื่องIteratorและวิธีการนำส่งกลับ iteratorของอินเตอร์เฟซคอนเทนเนอร์ระดับเอนทิตีตู้คอนเทนเนอร์ใช้อินเตอร์เฟซจะเป็นผู้รับผิดชอบในการดำเนินการอินเตอร์เฟซ Iterator
IteratorPatternDemo เรียนสาธิตของเราใช้คลาสนิติบุคคลที่จะพิมพ์NamesRepositoryNamesRepositoryเก็บไว้เป็นคอลเลกชันชื่อ
ขั้นตอนที่ 1
สร้างอินเตอร์เฟซ
Iterator.java
Iterator อินเตอร์เฟซที่สาธารณะ { hasNext ประชาชน boolean (); วัตถุประชาชนต่อไป (); }
Container.java
ตู้คอนเทนเนอร์อินเตอร์เฟซที่สาธารณะ { ประชาชน Iterator getIterator (); }
ขั้นตอนที่ 2
สร้างนิติบุคคลระดับคอนเทนเนอร์ใช้อินเตอร์เฟซชั้นนี้ได้ตระหนักถึงระดับภายในอินเตอร์เฟซNameIteratorIterator
NameRepository.java
เรียนสาธารณะ NameRepository ดำเนินคอนเทนเนอร์ { ชื่อสาธารณะ String [] = { "โรเบิร์ต", "จอห์น", "จูลี่", "Lora"}; @Override ประชาชน Iterator getIterator () { กลับ NameIterator ใหม่ (); } NameIterator ระดับเอกชนดำเนิน Iterator { ดัชนี int; @Override hasNext บูลีนสาธารณะ () { ถ้า (ดัชนี <names.length) { กลับจริง; } กลับเท็จ; } @Override วัตถุประชาชนต่อไป () { ถ้า (this.hasNext ()) { ชื่อกลับ [ดัชนี ++]; } กลับ NULL; } } }
ขั้นตอนที่ 3
ใช้NameRepositoryที่จะได้รับ iterators และพิมพ์ชื่อ
IteratorPatternDemo.java
เรียนสาธารณะ IteratorPatternDemo { ประชาชนเป็นโมฆะคง main (String args []) { NameRepository namesRepository = NameRepository ใหม่ (); สำหรับ (Iterator ITER = namesRepository.getIterator (); iter.hasNext ();) { ชื่อ String = (String) iter.next (); System.out.println ( "ชื่อ:" + ชื่อ); } } }
ขั้นตอนที่ 4
ตรวจสอบการส่งออก
ชื่อ: โรเบิร์ต ชื่อ: จอห์น ชื่อ: จูลี่ ชื่อ: Lora