作者liu2007 (薯)
看板java
標題[問題] 讓下層元件通知上上層元件進行更新
時間Fri Aug 23 13:41:02 2019
也許版上有文章但一時之間不知道要下什麼關鍵字去搜尋
用「下層」或「上層」當作關鍵字只找到這篇有類似問題
https://webptt.com/m.aspx?n=bbs/java/M.1210239349.A.CD6.html
我也去看了Design Pattern的觀察者模式
但看完我還是有幾個疑問
首先先簡單描述我的問題:
這是我的UI (javaFX)
https://imgur.com/BG5pDme.jpg
當按鈕被按下的時候
我希望他能夠能夠請他上上上層的TabPane類別新增一個新的Tab
https://imgur.com/OulyOzs.jpg
觀察者模式是一對多,也就是「一個」上層更新狀態的時候
會觸發「多個」訂閱上層的下層們進行更新
但在我這個問題中是反過來的
下層的按鈕會有很多個
而上層的TabPane只有一個
下層有通知上來上層的時候,上層要進行相對應的動作
如果是用訂閱者和報社的關係來比喻的話
就變成TabPane這個訂閱者要去跟好幾家Button報社訂閱
這樣我覺得怪怪的...
如果以我目前所知的方法
就是讓TabPane類別 implement Interface
然後在新增Tab的時候把自己 this 給傳下去
可是Tab和Button中間還有一個ScrollPane類別
所以Tab在new ScrollPaen的時候又把從TabPane拿到的 callback給傳下去
這樣做我自己真的是覺得超級詭異
請問我這個問題是屬於觀察者模式可以解的Design Pattern嗎?
我到底該怎麼解這個問題呢?
--
If a child on the street who has nothing is willing to share,
why are we who have everything still so greedy?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.227.117 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1566538866.A.184.html
※ 編輯: liu2007 (123.192.227.117 臺灣), 08/23/2019 13:42:16
1F:→ ssccg: 可以解,但實際上你每個button按下去都是不同的Subject 08/23 15:10
2F:→ ssccg: 是你實際上的用法有個Observer(TabPane)對收到一堆不同訂閱 08/23 15:12
3F:→ ssccg: 要做同一件事,不代表那些Subject相同,也不代表一定沒別的 08/23 15:13
4F:→ ssccg: Observer 08/23 15:13
5F:→ ssccg: 至於實作問題,你不想傳一堆callback reference,可以看看 08/23 15:18
6F:→ ssccg: Event Bus 08/23 15:22
結果我找到一個方式可以硬幹但很醜的方式:getParent()
https://pastebin.com/NmkfF17S
不知道業界的正統解法是什麼...
※ 編輯: liu2007 (123.192.227.117 臺灣), 08/23/2019 22:54:23