我剛剛開始在使用廣泛的Bean綁定(MVVM模式)的Java項目中使用GlazedLists。如何處理GlazedLists對共享發佈者和鎖定的PluggableList要求
PluggableList允許我將源列表綁定到表,然後在運行時更改源列表。爲了做到這一點,每個源列表必須共享相同的ListEventPublisher和ReadWriteLock,因爲PluggableList必須共享一個鎖和plublisher以及它的源代碼。我通過在我的類中創建一個靜態發佈者和鎖來實現此目的,該類擁有潛在的源列表,使用這些靜態值在類的每個實例化以及PluggableList中創建列表,如以下僞代碼所示:
public class ModelClass
{
final static EventList LIST = new BasicEventList();
final static ListEventPublisher LISTEVENTPUBLISHER = LIST.getPublisher();
final static ReadWriteLock READWRITELOCK = LIST.getReadWriteLock();
final EventList sourceList =
new BasicEventList(LISTEVENTPUBLISHER, READWRITELOCK);
}
public class UiControllerClass
{
final PluggableList pluggableList =
new PluggableList(ModelClass.LISTEVENTPUBLISHER, ModelClass.READWRITELOCK);
// ... call pluggableList.setSource(someSourceList)
}
我有兩個問題與此:
(1)我必須做的,因爲在UiController組件的具體要求在模型的決定。這似乎違反了MVVM模式。
(2)共享鎖可能會影響列表的性能,如果列表數量非常多並且經常訪問它們,因爲它們都共享相同的鎖定。否則這些列表中的每一個都應該能夠獨立操作而不必關心對方。
我該怎麼解決這個問題?如果沒有ModelClass必須瞭解特殊的UiControllerClass需求並且沒有潛在的性能影響,是否有更好的方法使PluggableLists可以工作?