Iterator Desain Pola
Oleh
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
Category
Komentar