Saya pikir slide 13 di presentasinya ( Nilai Nilai ) membantu untuk memahami ini:
Nilai-nilai
- Tidak perlu metode
- Saya dapat mengirimkan Anda nilai tanpa kode
dan Anda baik-baik saja
Pemahaman saya adalah, Hickey menyarankan bahwa jika saya perlu, katakanlah, gandakan nilai yang Anda kirimkan kepada saya, saya cukup menulis kode yang terlihat seperti
MyValue = Double(YourValue)
Anda lihat, kode di atas sama, tidak peduli apa pun nilai yang Anda kirim - semacam penggunaan kembali yang sempurna .
Sekarang, bagaimana ini akan terlihat seperti dalam bahasa yang memiliki objek dan antarmuka?
Doublable MyValue = YourValue.Double()
Oh tunggu! bagaimana jika YourValue
tidak diterapkan Doublable
? bukan karena itu tidak dapat digandakan, itu mungkin saja tapi ... bagaimana jika tidak ada metode Double
? (Bagaimana jika ada metode yang disebut katakan TwiceAsMuch
?)
Uh oh kita punya masalah. YourValue.Double
tidak akan berfungsi, tidak dapat digunakan kembali lagi. Per bacaan saya tentang slide di atas, ini adalah tentang apa yang dimaksudkan Hickey ketika dia berkata, "Semua antarmuka itu membunuh Anda!"
Anda lihat, antarmuka berasumsi bahwa objek dilewatkan "bersama dengan metode mereka", bersama dengan kode yang beroperasi pada ini. Untuk menggunakan objek, orang perlu memahami cara menjalankan kode itu, metode apa yang harus dihubungi.
Ketika metode yang diharapkan hilang, ada masalah, meskipun secara semantik , operasi yang diinginkan masuk akal untuk suatu objek. Seperti yang dinyatakan dalam presentasi, nilai tidak memerlukan metode ("Saya bisa mengirimkan Anda nilai tanpa kode dan Anda baik-baik saja"), memungkinkan untuk menulis kode yang berurusan dengan mereka secara umum.
Catatan: gagasan untuk memberikan nilai yang kurang kode, entah bagaimana, mengingatkan saya pada pola Flyweight di OOP.
objek yang meminimalkan penggunaan memori dengan berbagi data sebanyak mungkin dengan objek serupa lainnya; ini adalah cara untuk menggunakan objek dalam jumlah besar ketika representasi berulang yang sederhana akan menggunakan jumlah memori yang tidak dapat diterima ... Objek kelas terbang adalah objek nilai definisi . Identitas instance objek tidak ada konsekuensinya oleh karena itu dua instance Flyweight dengan nilai yang sama dianggap sama ...
Penggunaan kelas terbang yang pernah saya lihat biasanya mengikuti pendekatan yang sama dengan menghilangkan kode (metode, antarmuka) dari objek dan mengedarkan barang-barang sekitar, juga, nilai-nilai tanpa kode , berharap bahwa menerima kode memiliki cara yang diperlukan untuk mengoperasikannya.
Ini terasa seperti pada slide, "nilai tidak perlu metode. Saya bisa mengirimkan Anda nilai tanpa kode dan Anda baik-baik saja".