作者liu2007 (薯)
看板java
标题[问题] 让下层元件通知上上层元件进行更新
时间Fri Aug 23 13:41:02 2019
也许版上有文章但一时之间不知道要下什麽关键字去搜寻
用「下层」或「上层」当作关键字只找到这篇有类似问题
https://webptt.com/cn.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/cn.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