Saya membaca C # Essential Pola Desain . Saya sedang membaca tentang pola iterator.
Saya sepenuhnya mengerti bagaimana menerapkannya, tetapi saya tidak mengerti pentingnya atau melihat use case. Dalam buku tersebut diberikan contoh di mana seseorang perlu mendapatkan daftar objek. Mereka bisa melakukan ini dengan mengekspos properti publik, seperti IList<T>
atau Array
.
Buku itu menulis
Masalah dengan ini adalah bahwa representasi internal di kedua kelas ini telah terkena proyek luar.
Apa representasi internal? Fakta itu array
atau IList<T>
? Saya benar-benar tidak mengerti mengapa ini adalah hal buruk bagi konsumen (programmer memanggil ini) untuk mengetahui ...
Buku itu kemudian mengatakan pola ini berfungsi dengan mengekspos GetEnumerator
fungsinya, sehingga kita dapat memanggil GetEnumerator()
dan mengekspos 'daftar' dengan cara ini.
Saya menganggap pola ini memiliki tempat (seperti semua) dalam situasi tertentu, tetapi saya gagal melihat di mana dan kapan.
F
yang bagus yang memberi saya pengetahuan (metode) a
, b
dan c
. Semua baik dan bagus, bisa ada banyak hal yang berbeda tetapi hanya F
bagi saya. Pikirkan metode ini sebagai "kendala" atau klausul kontrak yang F
membuat kelas harus dikerjakan. Misalkan kita menambahkan d
, karena kita membutuhkannya. Ini menambahkan kendala tambahan, setiap kali kita melakukan ini, kita memaksakan lebih banyak pada F
s. Akhirnya (kasus terburuk) hanya satu hal yang bisa F
jadi kita mungkin tidak memilikinya. Dan F
sangat membatasi hanya ada satu cara untuk melakukannya.