JavaFX - Özellikleri etki alanı nesneleriyle kullanmanın doğru yolu


10

JavaFX, javafx.beans.property.DoublePropertyotomatik olarak gözlemlenebilen ve senkronize edilebilen alanları tanımlamanıza izin veren bir dizi yeni Özellik nesnesi sağlamıştır.

Birçok JFX örneğinde, MVC model sınıfı bu Özellik alanlarının birçoğuna sahiptir ve bu alan daha sonra görünüme otomatik olarak bağlanabilir.

Ancak, bu bizi JFX özelliklerini Domain nesnelerine (Model sınıfının bir domain nesnesi olacağını varsayarsak) koymamı teşvik ediyor gibi görünüyor, bu da beni endişelerin zayıf bir şekilde ayrılması (ör. GUI kodunu Domain'e yerleştirmek) ).

Bu sorunun 'gerçek hayatta' çözüldüğünü gören var mı, eğer öyleyse, nasıl yapıldı?


Lütfen yanılıyorsam beni düzeltin, ancak JavaFX anlayışım, Oracle tarafından satın almadan önce Sun tarafından 2008 yılında rafa kaldırılmış olması ve yalnızca Apple cihazlarında Silverlight ve Flash'ın Reddedilmesi ile piyasaya sürülmüş olmasıydı. Belki de manzaraya sıkı sıkıya bağlı olduğundan ve güneşte beklemeye alınmış orijinal bir nedenden dolayı haklısınız. Sadece bir düşünce.
Jack Stone

Sun ve şimdi Oracle birkaç yıldır JavaFX üzerinde sürekli çalışıyor. Son büyük değişiklik, JavaFX kullanmak için gerekli olan "JavaFX Script" programlama dilini sonlandırmak ve sıradan Java kullanmaya geçmekti. Bu değişim, tamamen benimsenmesi ve tamamen yeni bir programlama dilini destekleme masrafından kaynaklanmıştır.
Stuart Marks

Yanıtlar:


4

Sorunuzla ilgili olduğunu düşündüğüm JavaFX 2.0 ile oynuyorum. Gerçek üretim kodu değil, sadece kişisel bir proje, ama yukarıda bahsettiğiniz problemle karşılaştım. Tüm model 2D çerçeveden bağımlı olma eğilimindedir ve bunu sevmiyorum.

Yaptığım şey, modeldeki her sınıfı ikiye böldüm, içeriğini veritabanından yükleme yeteneğine sahip gerçek model sınıfı, durumunu vb. Nasıl değiştirdiğini bilir ... ve görünüme karar veren temsil sınıfı ekranda. İkincisi tüm Property sınıflarını içerecektir.

Aynı tasarımı Swing gibi herhangi bir MVC çerçevesinde bulacaksınız. sadece burada bunu yapmaktan kaçış yok.


Sizi iyi tasarım prensiplerini uygulamaya zorlayan veya yapmazsanız yüzünüze patlayan bir çerçeve. Bir .NET adamı olarak, bu bana çok tanıdık geliyor.
MattDavey

0

Neredeyse 7 yıl sonra ve bu soru hala eskisi gibi geçerli.

Kanımca, javafx hiçbir zaman Model'e ait sınıflardan hiçbiri tarafından ithal edilmemelidir. Ancak, MVC mimarisi ile birlikte bir MVVM benimserseniz çok iyi çalışabilirler. Bu anlamda

  • varlıklar = (alan adı) modeli ( M )
  • FXML dosyaları = görünüm ( V )
  • kontrolör hala kontrolördür ( C )
  • view-model ( VM ) = yalnızca javafx özelliklerini ve temsil ettiği gerçek etki alanı nesnesine (M) başvuru içeren yeni bir veri sınıfı kümesi. Bileşik / dekoratör olarak iş mantığı yöntem çağrılarını daha ileriye taşıyabilir.

MVVM + MVC

Bir şeyleri görmenin bir başka yolu, denetleyici sınıfını görünümün bir parçası olarak düşünmektir, çünkü tek yaptığı şey görünüm modelini görünümle (veri ve eylemler) bağlamaktır. Bu yüzden kolayca Sunum Yapan, hatta Bağlayıcı olarak adlandırılabilir. Ancak bu, denetleyiciyi nasıl kullandığınıza bağlıdır. Controller sınıfında görünüm modelini değiştirmek için mantık eklerseniz, adını hak eder ve yukarıda sunulan mimariye sahip olursunuz. Denetleyici sınıfı model verilerini yalnızca UI öğelerine ve ActionEvents'ı model yöntemlerine bağlarsa, MVVM mutant mimarisinin aşağıda sunulması eğilimindedir.

MVPVM

Bence bu mimariler bir şekilde Bob Amca'nın temiz mimari (sunum katmanı) hakkındaki fikirlerine uyuyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.