2012-09-26 33 views
0

我正在編寫一個應用程序來記錄鼓指紋(專門用於sampler)。我下面其是採樣器的約定:用於解耦依賴於另一個對象的對象的方法

  1. 序列爲1個以上曲目。 A 序列可以是quantized(將度量分成等份)。

  2. A 音軌是一種樂器或聲音,將在某個小節的某些部分播放。每個Track被分解成部分。部件的數量由序列的量化確定。例如,如果量化設置爲1/16,則陣列的長度將爲16.然後陣列的每個元素將存儲聲音是否應該在序列中的該步驟中播放。

當然,我有一個對象來表示一個序列。它有一個名爲tracks的屬性,它是一個Track對象的數組。 A Track對象具有與序列的量化等長的陣列屬性。

我很痛苦主要分析癱瘓,但無法確定什麼是屬於特定Sequence知道何時量化發生了變化,因此它可以更新自己的內部數組中的所有Track對象乾淨的方式?

或者

應如何Track對象知道它的數組的長度設置爲不耦合Sequence對象?

+0

曲目可以獨立於序列存在嗎? – parsifal

+0

@parsifal不,他們不能 –

回答

1

如果每個軌道必須屬於一個且只有一個序列,那麼它們是天生的耦合。反映實現中的耦合不是問題(除了單元測試)。

由於序列啓動了此更改,因此我會推薦一個可公開訪問的方法來設置整個序列的量化,然後遍歷序列的軌道以設置其量化。 Sequence.setQuantization()將公開,Track.setQuantization()不應該。

爲確保保持耦合,我還限制了在Sequence(例如:addTrack())上創建工廠方法的對象Track的能力。

這就提出了獨立單元測試的問題TrackSequence。做到這一點的一種方法是將這些對象創建爲接口,然後爲每個測試代碼提供一個鉤子實現。這導致自己的醜陋,可能包括一個SequenceFactory,但只有你可以決定你需要多少純度。

相關問題