簡體   English   中英

Swing GUI與域邏輯通信的最佳方式?

[英]Best way for a Swing GUI to communicate with domain logic?

我在一些POJO中實現了一些域邏輯。 我想編寫一個Swing用戶界面,以允許用戶啟動並查看各種域操作的結果。

UI和域之間通信的最佳模式/框架/庫是什么? 這歸結為:

  • UI能夠將用戶手勢轉換為域操作
  • 該域能夠將狀態/結果信息發送回UI以用於顯示目的

我知道MVC是一個廣泛的概念,並且已經擺弄了Observer模式(如果我理解正確,它的Java實現有一些缺點),但我想知道這個問題是否有一個公認的最佳實踐?

肯定是MVC - 類似於這個例子 ,它可以清楚地分解出來。 Swing示例的問題在於它們似乎顯示MVC都在搖擺的東西中工作,這對我來說似乎不對

MVC對於單個窗口小部件來說非常棒,但是當您擁有包含大量窗口小部件的pagesforms時,它會變得有點不守規矩。

可能值得研究的一件事(我不支持它,我實際上沒有使用它,只為我自己實現了非常類似的東西)是Beans Binding Framework(JSR295

我過去曾使用Observer模式(使用AspectJ魔法)取得了一些成功,但發現除非你小心翼翼,否則很快就會成為一個集群..呃......輕彈?

它很快變得難以管理,最重要的是非常難以調試。

編輯:

為了略微擴展我的答案,我們使用SWT ,而不是Swing,所以YMMV。 我們基本上使用AspectJ來連接從UI組件到模型對象的數據傳輸。 這些模型對象是愚蠢的POJO。

實際業務邏輯是通過使用AspectJ“觀察”模型對象並在更改時觸發所需事件來完成的。 因此,如果您更改了文本框中的值,AspectJ將觸發並將該值復制到POJO中。 如果POJO這一領域有一個事件在它的業務邏輯,那么這將觸發。 如果該邏輯修改了任何POJO(並且它可以),AspectJ會注意到並將POJO中的值復制到UI組件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM