Latest web development tutorials

modus berulang

Modus berulang (Iterator Pola) Java dan .Net lingkungan pemrograman adalah pola desain yang sangat umum. Mode ini digunakan untuk elemen akses sekuensial dari koleksi benda-benda, koleksi benda-benda tidak perlu mengetahui representasi yang mendasari.

pola Iterator milik pola perilaku.

pengenalan

Maksud: Menyediakan cara untuk mengakses obyek di setiap elemen dari polimerisasi, tetapi tidak perlu untuk mengekspos bagian dari objek.

Terutama untuk mengatasi: cara yang berbeda untuk melintasi seluruh objek integrasi.

Kapan menggunakan: melintasi objek polimer.

Cara untuk memperbaiki: berjalan antara unsur-unsur dari tanggung jawab untuk iterator bukan objek agregat.

Kode kunci: mendefinisikan antarmuka: hasNext, berikutnya.

contoh aplikasi: JAWA di iterator.

Keuntungan: 1, yang mendukung dengan cara yang berbeda untuk melintasi obyek agregat.2, menyederhanakan kelas polimerisasi iterator. 3, di polimerisasi yang sama dapat memiliki beberapa traversal. 4, dalam mode berulang, menambahkan kelas baru dari kelas iterator polimer dan mudah, tanpa memodifikasi kode asli.

Kekurangan: Karena pemisahan tugas iterator penyimpanan data pola dan data melintasi, menambahkan kelas gabungan baru membutuhkan peningkatan yang sesuai dalam kelas iterator baru, jumlah pasangan Kelas meningkat, yang meningkatkan kompleksitas sistem sampai batas tertentu.

skenario penggunaan: 1, akses ke objek konten polimer tanpa harus mengekspos representasi internal.2, kebutuhan untuk menyediakan berbagai metode objek traversal agregat. 3 untuk melintasi struktur agregat yang berbeda menyediakan antarmuka yang seragam.

Catatan: Modus berulang dipisahkan perilaku traversal dari koleksi benda-benda, abstrak kelas iterator untuk bertanggung jawab, sehingga keduanya dapat dilakukan tanpa paparan struktur internal koleksi, tetapi juga membiarkan akses transparan kode eksternal untuk pengumpulan data internal.

realisasi

Kami akan membuat antarmuka narasiIteratordan metode navigasi Mengembalikan iterator dari antarmukaKontainer.kelas entitasKontainermengimplementasikan antarmuka akan bertanggung jawab untukmengimplementasikanantarmukaIterator.

IteratorPatternDemo,kelas demonstrasi kami menggunakan kelas entitas untuk mencetakNamesRepositoryNamesRepository disimpan sebagai koleksiNama.

pola Iterator diagram UML

Langkah 1

Buat sebuah antarmuka.

Iterator.java

antarmuka publik Iterator {
   publik hasNext boolean ();
   Obyek publik berikutnya ();
}

Container.java

antarmuka publik Kontainer {
   publik Iterator getIterator ();
}

Langkah 2

Buat entitas kelasContainermengimplementasikan antarmuka. Kelas ini telah menyadari kelas internal yangNameIteratorIterator antarmuka.

NameRepository.java

public class NameRepository mengimplementasikan Kontainer {
   nama public String [] = { "Robert", "John", "Julie", "Lora"};

   @ Override
   publik Iterator getIterator () {
      kembali NameIterator baru ();
   }

   kelas privat NameIterator mengimplementasikan Iterator {

      int index;

      @ Override
      publik hasNext boolean () {
         if (index <names.length) {
            kembali benar;
         }
         return false;
      }

      @ Override
      Obyek publik berikutnya () {
         jika (this.hasNext ()) {
            kembali nama [index ++];
         }
         kembali null;
      }		
   }
}

Langkah 3

GunakanNameRepositoryuntuk mendapatkan iterator, dan mencetak nama-nama.

IteratorPatternDemo.java

public class IteratorPatternDemo {
	
   public static void main (String [] args) {
      NameRepository namesRepository = baru NameRepository ();

      untuk (Iterator iter = namesRepository.getIterator (); iter.hasNext ();) {
         Nama String = (String) iter.next ();
         System.out.println ( "Nama:" + nama);
      } 	
   }
}

Langkah 4

Verifikasi output.

Nama: Robert
Nama: John
Nama: Julie
Nama: Lora