Iterator Desain Pola

chmood

Β  Β Menyediakan cara untuk mengakses elemen objek agregat berurutan tanpa memaparkan representasi yang mendasarinya.
C ++ dan Java standar perpustakaan abstraksi yang memungkinkan untuk memisahkan kelas koleksi dan algoritma.
Promosikan untuk "penuh Status objek" traversal dari koleksi.
Traversal polimorfik

Β  Β Perlu "abstrak" traversal struktur data yang sangat berbeda sehingga algoritma dapat didefinisikan yang mampu berinteraksi dengan masing-masing secara transparan.

Β  Β "Sebuah objek agregat seperti daftar harus memberi Anda cara untuk mengakses elemen tanpa mengekspos struktur internal. Selain itu, Anda mungkin ingin melintasi daftar dengan cara yang berbeda, tergantung pada apa yang Anda butuhkan untuk menyelesaikan. Tapi Anda mungkin tidak ingin mengasapi Daftar antarmuka dengan operasi untuk traversals berbeda, bahkan jika Anda bisa mengantisipasi yang Anda akan butuhkan. Anda juga mungkin perlu untuk memiliki lebih dari satu traversal tertunda pada daftar yang sama. " Dan, menyediakan antarmuka yang seragam untuk melintasi berbagai jenis objek agregat (yaitu iterasi polimorfik) mungkin berharga.

Β  Β Pola Iterator memungkinkan Anda melakukan semua ini. Ide utama adalah untuk mengambil tanggung jawab untuk akses dan traversal dari objek agregat dan memasukkannya ke dalam sebuah objek Iterator yang mendefinisikan protokol traversal standar.

Β  Β Iterator abstraksi merupakan dasar untuk sebuah teknologi baru yang disebut "pemrograman generik". Strategi ini berusaha untuk secara eksplisit memisahkan gagasan "algoritma" dari yang "struktur data". Motivasi adalah untuk: mempromosikan pembangunan berbasis komponen, meningkatkan produktivitas, dan mengurangi manajemen konfigurasi.

Β  Β Sebagai contoh, jika Anda ingin mendukung empat struktur data (array, pohon biner, linked list, dan tabel hash) dan tiga algoritma (semacam, menemukan, dan menggabungkan), pendekatan tradisional akan membutuhkan empat kali tiga permutasi untuk mengembangkan dan memelihara . Sedangkan, pendekatan pemrograman generik hanya membutuhkan empat ditambah tiga item konfigurasi.


Β  Β Klien menggunakan antarmuka publik Koleksi kelas 'secara langsung. Tetapi akses ke elemen Collection dirumuskan belakang tingkat tambahan abstraksi disebut Iterator. Koleksi berasal masing-masing kelas yang tahu Iterator berasal kelas untuk membuat dan kembali. Setelah itu, Klien bergantung pada antarmuka yang didefinisikan di kelas dasar Iterator.


Β  Β The Iterator menyediakan cara untuk mengakses elemen objek agregat berurutan tanpa mengekspos struktur yang mendasari objek. File adalah objek agregat. Dalam pengaturan kantor di mana akses ke file dilakukan melalui staf administrasi atau sekretaris, pola Iterator ditunjukkan dengan sekretaris bertindak sebagai Iterator tersebut. Beberapa sandiwara komedi televisi telah dikembangkan sekitar premis seorang eksekutif mencoba memahami sistem pengarsipan sekretaris. Untuk eksekutif, sistem pengarsipan membingungkan dan tidak logis, tapi sekretaris dapat mengakses file dengan cepat dan efisien.

Β  Β Di televisi awal, dial digunakan untuk mengubah saluran. Ketika channel surfing, pemirsa diminta untuk bergerak cepat melalui setiap posisi saluran, terlepas dari apakah atau tidak saluran yang memiliki penerimaan. Di televisi modern, tombol berikutnya dan sebelumnya digunakan. Ketika penampil memilih tombol "berikutnya", saluran disetel berikutnya akan ditampilkan. Pertimbangkan menonton televisi di kamar hotel di kota yang aneh. Ketika berselancar melalui saluran, jumlah saluran tidak penting, tetapi pemrograman adalah. Jika pemrograman pada satu saluran tidak menarik, penonton dapat meminta saluran berikutnya, tanpa mengetahui nomor nya.



Β  Β Menambahkan metode create_iterator () ke "koleksi" kelas, dan mengabulkan "iterator" akses istimewa kelas.
Desain sebuah "iterator" kelas yang dapat merangkum traversal dari "koleksi" kelas.
Klien meminta objek koleksi untuk membuat objek iterator.
Klien menggunakan pertama (), is_done (), berikutnya (), dan current_item () protokol untuk mengakses elemen dari kelas koleksi

Β  Β Pohon sintaks abstrak Interpreter adalah Komposit (karena itu Iterator dan Pengunjung juga berlaku).
Iterator dapat melintasi Komposit. Pengunjung dapat menerapkan operasi selama Komposit.
Iterators polimorfik mengandalkan Metode Pabrik instantiate Iterator subclass yang sesuai.
Memento sering digunakan bersama dengan Iterator. Iterator dapat menggunakan Memento untuk menangkap keadaan iterasi. Iterator yang menyimpan Memento internal



Komentar