我有一個項目,我第一次廣泛使用觀察者模式。有一兩件事,我雖然發現是,如果我考察這個項目的典型對象,它往往是與所有的觀察員和觀測,然後將時間的驚人大當觀察者具有其他觀察員等濫用觀察者模式很容易嗎?
由於表現良好,這似乎並不重要。但是偶爾我在調試器中發現,如果我嘗試打印一個實例變量,它會鎖定我的機器,直到我終止進程。這讓我擔心代碼在生產時會出現這種情況。或者這只是一個警告,我濫用這種模式。
任何提示,建議?
我有一個項目,我第一次廣泛使用觀察者模式。有一兩件事,我雖然發現是,如果我考察這個項目的典型對象,它往往是與所有的觀察員和觀測,然後將時間的驚人大當觀察者具有其他觀察員等濫用觀察者模式很容易嗎?
由於表現良好,這似乎並不重要。但是偶爾我在調試器中發現,如果我嘗試打印一個實例變量,它會鎖定我的機器,直到我終止進程。這讓我擔心代碼在生產時會出現這種情況。或者這只是一個警告,我濫用這種模式。
任何提示,建議?
TL; DR:是的,但這並不意味着它並不完美的時候。
「令人驚訝的大」意味着......它相當大; 究竟是是什麼意思?那裏有多少觀察員/觀察者?他們是深深嵌套的嗎?
IMO在調試器和「現實生活」做的東西之間的相關性不是特別強; 有它曾經鎖定在生產或測試?我更可能認爲它是調試過程/應用程序的一個人爲因素。
「在距離幽靈行動」創建非局域必須以正確的推理代碼和行爲的理解。這種發展需要積極培養;而不是說「我會創建一個新的觀察者」,設計它並儘可能保持線性。
您可以覆蓋inspect
方法是更簡潔。
那麼,你應該只在你需要它的時候使用它,而不是你的所有對象,即使它們不需要被通知變化/事件。 – coreyward
也許我遇到的最大問題是,它使得更難以調試我的代碼與非線性的事件觸發。而且它鎖定我的調試器的事實並沒有幫助。 –
@CloseVoters:這個問題有點泛泛,但它是值得的。 –