我有一個名爲「層次結構」的對象,基本上只是一個字符串列表,例如。 [1 2 3 4]。我也有一些叫做FormattedHierarchies的對象,它們應該總是以用戶希望表示的方式保留層次結構的格式化版本,例如, (1-4)或{1,2,3,4}。檢查對象是否發生了變化(保留良好的類設計)
我的問題是這樣的:
我要立即更新FormattedHierarchy當層次已更改(例如,如果從[1 2 3 4]層次結構的變化[1 2 3] FormattedHierarchy應該從改變(1-4)至(1-3))。
谷歌搜索變成了http://docs.oracle.com/javase/tutorial/uiswing/events/changelistener.html 但我的問題是這樣的:如果我想有層次實現的ChangeListener,它必須實現方法「stateChanged」。
類型層次結構必須實現繼承的抽象方法 ChangeListener.stateChanged(的ChangeEvent)
具有層次創建一個新的FormattedHierarchy是不可行的,我也認爲這不是善類設計。這是因爲層次結構會執行處理其格式的內容(儘管以間接方式)。
是否有任何標準或聰明的解決方案來解決這個問題?
爲什麼不只是使用一個標誌(例如'isModified')? – user1329572
正如我希望更改自動更新,我寧願有一個isChanged-方法,無論何時在層次結構上使用setter時都會調用該方法。它可能具有我不知道或無法預見的含義無論何時使用setter,setter調用isChanged方法是否有任何缺點? –