JavaFX telah menyediakan banyak objek Properti baru, seperti javafx.beans.property.DoubleProperty
yang memungkinkan Anda untuk menentukan bidang yang dapat diamati dan disinkronkan secara otomatis.
Dalam banyak contoh JFX, kelas model MVC memiliki sejumlah bidang Properti ini, yang kemudian dapat mengikat secara otomatis ke tampilan.
Namun, ini tampaknya mendorong kami untuk menempatkan properti JFX ke objek Domain kami (jika Anda berasumsi bahwa kelas Model akan menjadi objek domain), yang menurut saya adalah pemisahan yang buruk dari keprihatinan (mis. Menempatkan kode GUI di Domain ).
Adakah yang melihat masalah ini diselesaikan dalam 'kehidupan nyata' dan, jika demikian, bagaimana hal itu dilakukan?
properties
javafx
domain-objects
pjm56
sumber
sumber
Jawaban:
Saya telah bermain-main dengan JavaFX 2.0, yang menurut saya pertanyaan Anda adalah tentang. Bukan kode produksi nyata, hanya proyek pribadi, tapi saya mengalami masalah yang sama yang Anda sebutkan di atas. Seluruh model cenderung menjadi tergantung dari kerangka 2D, dan saya tidak menyukainya.
Apa yang saya lakukan itu saya membagi setiap kelas tunggal dalam model menjadi dua, kelas model nyata , yang memiliki kemampuan untuk memuat isinya dari database, tahu bagaimana ia mengubah keadaannya dll dll ... dan kelas representasi yang menentukan penampilan pada layar. Yang terakhir akan berisi semua kelas Properti.
Anda akan menemukan desain yang sama dalam kerangka MVC apa pun, seperti Swing. hanya saja di sini tidak ada jalan keluar untuk melakukannya.
sumber
Hampir 7 tahun kemudian dan pertanyaan ini masih valid seperti sebelumnya.
Menurut pendapat saya, javafx tidak boleh diimpor oleh kelas yang termasuk dalam Model. Namun, mereka dapat bekerja dengan sangat baik jika Anda mengadopsi MVVM yang dikombinasikan dengan arsitektur MVC. Dalam hal ini
Cara lain untuk melihat sesuatu adalah dengan menganggap kelas controller sebagai bagian dari view, karena semua yang dilakukannya adalah mengikat view-model dengan view (data dan action). Jadi bisa dengan mudah disebut Presenter atau bahkan Binder. Namun ini tergantung pada bagaimana Anda menggunakan controller. Jika Anda menambahkan logika untuk memanipulasi view-model di kelas Controller, maka itu pantas namanya dan Anda memiliki arsitektur yang disajikan di atas. Jika kelas pengontrol hanya mengikat data model ke elemen UI dan ActionEvents ke metode pemodelan, maka Anda cenderung memiliki arsitektur mutan MVVM yang disajikan di bawah ini.
Saya pikir arsitektur ini entah bagaimana cocok dengan ide-ide Paman Bob tentang arsitektur bersih (lapisan presentasi).
sumber