開發一個JOGL的應用程序,這是(的一部分),我們的核心類結構對於核心部件實例使用靜態變量是否糟糕?
主要的JFrame
瀏覽器(渲染)
inputListener
viewpole (用於相機/投影控制)
圖(持有節點/網格)
- 圖標處理程序(展開/摺疊與孩子的節點)
所以,如果我想打電話給methodX()在圖標處理程序(基本上是代表處理程序的紋理,它對於所有節點都是相同的),我必須致電:
Main.instance.getViewer().getGraph().getIconHandler().methodX()
其中實例是
一個靜態變量保持主JFrame的實例鑑於它們都是:
1)實例化一次
2)在開始
3)都應該4)理論上沒有競爭條件的問題,當我們添加/讀取/修改/刪除節點時,我們使用的是較低級別的java.util.concurrent.locks.ReentrantReadWriteLock
。
將每個類的實例分配給每個相應類中的靜態變量是否危險/不好設計?
所以,如果我想訪問相同的methodX()
我只想叫
IconHandler().instance.methodX()
PS:我看了一些關於靜態變量的其他問題(),但我發現他們很普通,我的關於核心部分。
好的,感謝您的反饋,凱文 – elect
順便說一句,它仍然沒有咬我回來! :p – elect
@elect這只是幾個月。等到你對多個項目有這種習慣,然後讓你寫了10年的軟件不能支持新的功能請求。 –