เกือบ 7 ปีต่อมาและคำถามนี้ยังคงใช้ได้เหมือนเดิม
ในความคิดของฉัน javafx ไม่ควรนำเข้าโดยคลาสใด ๆ ที่เป็นของ Model อย่างไรก็ตามมันอาจทำงานได้ดีถ้าคุณใช้ MVVM ร่วมกับสถาปัตยกรรม MVC ในแง่นี้
- เอนทิตี = (โดเมน) โมเดล ( M )
- ไฟล์ FXML = มุมมอง ( V )
- คอนโทรลเลอร์ยังคงเป็นคอนโทรลเลอร์ ( C )
- the view-model ( VM ) = ชุดของคลาสข้อมูลใหม่ที่มีคุณสมบัติ javafx เท่านั้นและการอ้างอิงไปยังวัตถุโดเมนจริง (M) ที่แสดง มันอาจผ่านวิธีการทางตรรกะทางธุรกิจเรียกเพิ่มเติมเพื่อวัตถุนี้ทำหน้าที่เป็นคอมโพสิต / มัณฑนากร
อีกวิธีหนึ่งในการมองสิ่งต่าง ๆ คือการคิดว่าคลาสคอนโทรลเลอร์เป็นส่วนหนึ่งของมุมมองเนื่องจากทั้งหมดนี้คือการผูกโมเดลมุมมองเข้ากับมุมมอง (ข้อมูลและการกระทำ) ดังนั้นจึงสามารถเรียกได้อย่างง่ายดายว่าผู้นำเสนอหรือแม้แต่ Binder ขึ้นอยู่กับว่าคุณใช้คอนโทรลเลอร์อย่างไร ถ้าคุณเพิ่มตรรกะสำหรับจัดการรูปแบบมุมมองในคลาสตัวควบคุมมันควรได้รับชื่อและคุณมีสถาปัตยกรรมที่นำเสนอข้างต้น หากคลาสคอนโทรลเลอร์เชื่อมโยงข้อมูลโมเดลกับองค์ประกอบ UI และ ActionEvents กับวิธีการจำลองเท่านั้นคุณมักจะมีสถาปัตยกรรมกลายพันธุ์ MVVM ที่แสดงด้านล่าง
ฉันคิดว่าสถาปัตยกรรมเหล่านี้ตรงกับความคิดของลุงบ็อบเกี่ยวกับสถาปัตยกรรมที่สะอาด (เลเยอร์การนำเสนอ)