0
在我當前的項目中,我有一些想要在環境中移動的Actor。不同的參與者可能有不同的運動策略,而我注入戰略,作爲依賴關係到演員如下(與語言無關):解決與庫類的循環依賴關係
actor = new Actor(new Strategy());
然而,這個策略需要能夠根據演員的狀態作出決定(如其當前位置,健康狀況等)。因此,Actor需要注入策略,這顯然是不好的設計,因爲它是循環依賴。
閱讀this article後,我試圖提取演員一些狀態信息到一個名爲國家新的類,現在有一個依賴模型,看起來像這樣:
state = new State();
strategy = new Strategy(state);
actor = new Actor(state, strategy);
這消除了循環依賴。但是,在我的項目中,Actor是從已經擁有狀態信息的庫類(位置,健康狀況等)派生而來的。因此,當Actor已經具有這種責任時,提取第三個國家班級並沒有什麼意義。所有國家都在做的是從演員手中奪取國家,所以最糟糕的是他們仍然是循環依賴的,或者至多他們是強烈耦合的。
處理這種情況的最佳方法是什麼?最後,我試圖將動作策略注入演員,演員需要知道一些狀態信息以作出明智的決定,Actor則擴展包含狀態的庫類。