JavaFX-도메인 객체에 등록 정보를 사용하는 올바른 방법


10

JavaFX는 javafx.beans.property.DoubleProperty자동으로 관찰 및 동기화 할 수있는 필드를 정의 할 수 있는 여러 가지 새로운 Property 객체를 제공했습니다 .

많은 JFX 예제에서 MVC 모델 클래스에는 여러 가지 속성 필드가 있으며이 필드는 자동으로 뷰에 바인딩 될 수 있습니다.

그러나 이것은 JFX 속성을 Domain 객체에 넣도록 권장하는 것으로 보입니다 (Model 클래스가 도메인 객체가 될 것이라고 가정하는 경우). ).

이 문제가 '실제 생활'에서 해결되는 것을 본 사람이 있다면 어떻게 되었습니까?


내가 틀렸다면 저를 정정하십시오. JavaFX에 대한 나의 이해는 Oracle이 구입하기 전에 2008 년에 Sun에 의해 보류되었으며 Apple 디바이스에서 Silverlight 및 Flash의 거부가 더 이상 사용되지 않는 것으로 시장에 새로 단장되었다는 것입니다. 어쩌면 당신은 그것이 견해와 밀접하게 결합되어 있고 그것이 햇볕에 잠긴 원래의 이유 일 수 있습니다. 그냥 생각이야
잭 스톤

Sun과 현재 Oracle은 몇 년 동안 JavaFX를 지속적으로 개발해 왔습니다. 최근의 주요 변화는 JavaFX를 사용하는 데 필요한 "JavaFX 스크립트"프로그래밍 언어를 중단하고 일반 Java를 사용하도록 전환하는 것이 었습니다. 이러한 변화는 완전히 새로운 프로그래밍 언어를 지원하는 데 대한 채택과 비용이 낮기 때문입니다.
스튜어트 마크

답변:


4

나는 당신의 질문에 관한 JavaFX 2.0을 가지고 놀고 있습니다. 실제 프로덕션 코드가 아니라 개인 프로젝트 일 뿐이지 만 위에서 언급 한 것과 동일한 문제가 발생했습니다. 전체 모델은 2D 프레임 워크에 의존하는 경향이 있으며 마음에 들지 않습니다.

내가 한 것은 데이터베이스의 내용을로드 할 수있는 기능을 가진 실제 모델 클래스와 상태 등을 변경하는 방법과 모양을 결정하는 표현 클래스를 알 수 있습니다. 화면에. 후자는 모든 Property 클래스를 포함합니다.

Swing과 같은 모든 MVC 프레임 워크에서 동일한 디자인을 찾을 수 있습니다. 단지 여기서 벗어나는 탈출구가 없다는 것입니다.


좋은 디자인 원칙을 적용하도록 강요하거나 그렇지 않으면 얼굴을 날려 버릴 수있는 프레임 워크입니다. .NET 사람으로서 이것은 매우 친숙합니다.
MattDavey

0

거의 7 년 후이 질문은 여전히 ​​전과 같이 유효합니다.

내 생각에, javafx는 모델에 속한 클래스 중 어느 것으로도 가져 와서는 안됩니다. 그러나 MVC 아키텍처와 결합 된 MVVM을 채택하면 매우 잘 작동 할 수 있습니다. 이런 의미에서

  • 엔티티 = (도메인) 모델 ( M )
  • FXML 파일 =보기 ( V )
  • 컨트롤러는 여전히 컨트롤러입니다 ( C )
  • view-model ( VM ) = javafx 속성과 그것이 나타내는 실제 도메인 객체 (M)에 대한 참조 만 포함하는 새로운 데이터 클래스 세트. 비즈니스 로직 메소드 호출을이 오브젝트에 추가로 전달하여 복합 / 데코레이터 역할을 할 수 있습니다.

MVVM + MVC

사물을 보는 또 다른 방법은 컨트롤러 클래스를 뷰의 일부로 생각하는 것입니다. 뷰 모델과 뷰 (데이터 및 작업)를 바인딩하는 것뿐이기 때문입니다. 따라서 쉽게 발표자 또는 바인더라고 할 수 있습니다. 그러나 이것은 컨트롤러 사용 방법에 따라 다릅니다. Controller 클래스에서 뷰 모델을 조작하기위한 로직을 추가하면 해당 이름을 사용할 수 있으며 위에 제시된 아키텍처가 있습니다. 컨트롤러 클래스가 모델 데이터 만 UI 요소에 바인딩하고 ActionEvents를 모델 메소드에 바인딩하는 경우 MVVM 돌연변이 아키텍처가 아래에 표시되는 경향이 있습니다.

MVPVM

저는이 아키텍처가 깨끗한 아키텍처 (프레젠테이션 레이어)에 대한 Bob Uncle의 아이디어와 어떤 식으로도 일치한다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.