[問題] 讓下層元件通知上上層元件進行更新

看板java作者 (薯)時間5年前 (2019/08/23 13:41), 5年前編輯推噓0(006)
留言6則, 1人參與, 5年前最新討論串1/1
也許版上有文章但一時之間不知道要下什麼關鍵字去搜尋 用「下層」或「上層」當作關鍵字只找到這篇有類似問題 https://www.ptt.cc/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://www.ptt.cc/bbs/java/M.1566538866.A.184.html ※ 編輯: liu2007 (123.192.227.117 臺灣), 08/23/2019 13:42:16

08/23 15:10, 5年前 , 1F
可以解,但實際上你每個button按下去都是不同的Subject
08/23 15:10, 1F

08/23 15:12, 5年前 , 2F
是你實際上的用法有個Observer(TabPane)對收到一堆不同訂閱
08/23 15:12, 2F

08/23 15:13, 5年前 , 3F
要做同一件事,不代表那些Subject相同,也不代表一定沒別的
08/23 15:13, 3F

08/23 15:13, 5年前 , 4F
Observer
08/23 15:13, 4F

08/23 15:18, 5年前 , 5F
至於實作問題,你不想傳一堆callback reference,可以看看
08/23 15:18, 5F

08/23 15:22, 5年前 , 6F
Event Bus
08/23 15:22, 6F
結果我找到一個方式可以硬幹但很醜的方式:getParent() https://pastebin.com/NmkfF17S 不知道業界的正統解法是什麼... ※ 編輯: liu2007 (123.192.227.117 臺灣), 08/23/2019 22:54:23
文章代碼(AID): #1TNtno64 (java)
文章代碼(AID): #1TNtno64 (java)