摘要:該文介紹了兩種設計模式的特點和適用場合,通過分析武器裝備模擬對抗系統態勢顯示模塊設計中的問題,提出了觀察者和中介者兩種設計模式在系統構建中的應用思想,提高了系統的可維護性和可擴展性,為以后系統模塊的移植和擴展打下了基礎。
關鍵詞:模擬對抗系統;顯示模塊;設計模式
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)36-10335-02
Application of Design Pattern in Weapon Equipment Simulation Countermine System Display Module
ZHANG Guo-wei, ZHU Jian-min, GONG Yun-xiang
(Engineering Institute of Engineer Corps, PLA Univ. of Sci. Tech., Nanjing 210007, China)
Abstract: The paper introduces the characteristic and application situation. By analyzing the questions of Weapon Equipment Simulation Countermine System Display Module, the idea about application of Observer and Mediator design patterns in system construction is listed. The maintainability and expansibility of system are enhanced. Groundwork is established for the migration and expansion of system module.
Key words: simulation countermine system; display module; design pattern
設計模式是軟件工程技術中的一個重要概念,通過提供一個顯示類和對象作用關系以及它們之間潛在聯系的說明規范,使人們可以更加方便地復用成功的設計和體系結構。這樣可以簡化軟件的設計和實現過程,使軟件系統的基礎構架更加清晰,為軟件工程的應用和軟件開發提供了良好的途徑。[1]
在武器裝備模擬對抗系統的實現過程中,如何真實、直觀地表現虛擬戰場環境并實時反映戰場變化一直作為一個瓶頸而存在。本文對通過分析觀察者模式(Observer)和中介者(Mediator)模式的特點,提出了基于這兩種設計模式的武器裝備模擬對抗系統態勢顯示模塊設計方案。
1 武器裝備模擬對抗系統態勢顯示模塊的結構
隨著信息技術在軍事領域的廣泛應用,戰爭系統變得更加復雜。當戰爭需要時,體系對抗就會在敵對雙方作戰體系之間展開,形成所有要素的整體對抗。敵對雙方武器裝備體系對抗所構成的整體稱為體系對抗系統,這個系統具有顯著的復雜性特征。[2]因為武器裝備模擬對抗系統具有涌現性、不確定性、交互性、非線性和主動性等特點,因為其設計與實現具有一定的難度。顯示模塊是武器裝備模擬對抗系統一個重要的組成部分,目前顯示模塊的設計實現過程中面臨如下三個主要問題:
1) 作戰要素交互關系復雜
虛擬戰場環境中包括大量武器裝備模型、各種作戰人員模型 ,而且武器裝備的性能以及作戰人員級別,兵種的也不盡不同。在模擬對抗過程中不同武器裝備之間、不同的作戰人員之間的對抗會產生效果不同的毀傷,因為作戰要素的多樣性,所以對抗交互的種類極為繁多。
2) 狀態顯示實時變化
戰場環境處于實時的動態變化過程中,例如移動模型時時刻刻進行的碰撞檢測,隨時出現的炮彈彈坑、武器開火、裝備受損等都要求可視化場景的變化必須是動態、實時的。場景變化實時信息的處理也是戰場態勢顯示的難點之一[3]。
3) 場景控制復雜
虛擬戰場環境中作戰環境中地形復雜,武器種類繁多,戰斗人員的兵種多為混合型 ,指揮命令多樣,而且每一種戰斗模型所能夠觀測的范圍也不盡相同,所有這些都造成可視化場景控制復雜度的大大增加[3]。
在武器裝備模擬對抗系統態勢顯示模塊中主要包括二部分:視圖層、要素層,其中后者包括:戰場環境模塊、紅軍模塊和藍軍模塊。如圖1所示。
2 設計模式分析
2.1 觀察者模式(Observer)[1]
在軟件構建過程中,常常需要為某些對象建立一種“通知依賴關系”—— 一個對象(目標對象)的狀態發生改變,所有的依賴對象(觀察者對象)都將得到通知。如果這樣的依賴關系過于緊密,將使軟件不能很好地抵御變化。使用面向對象技術,可以將這種依賴關系弱化,并形成一種穩定的依賴關系,從而實現軟件體系結構的松耦合。定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。在觀察者(Observer)模式里有如下的角色:
Observer模式如圖2所示。
Observer模式的適用場合如下:
1) 當一個抽象模型有兩個方面,其中一個方面依賴于另一方面時,將這二者封裝在獨立的對象中以使它們可以各自獨立地改變和復用。
2) 當對一個對象的改變需要同時改變其他對象 ,而不知道具體有多少對象有待改變時。
3) 當一個對象必須通知其他對象,而它又不能假定是哪個對象時,即這些對象不是緊密耦合的。
2.2 中介者模式(Mediator)[1]
中介者模式用一個中介對象來封裝一系列的對象交互,使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。
Mediator模式如圖3所示。
Mediator模式的適用場合如下:
1) 一組對象以定義良好但是復雜的方式進行通信,產生的相互依賴關系結構混亂而且難以理解。
2) 一個對象引用其它很多對象并且直接與這些對象通信,導致難以復用該對象。
3) 想定制一個分布在多個類中的行為,而又不想生成太多的子類。
3 武器裝備模擬對抗系統態勢顯示模塊設計與實現
3.1 紅藍軍模塊對抗的設計與實現
在相互對抗的不同武器裝備和作戰人員類中定義一個公共的接口WPmediator,通過生成具體的中介者ConcreteWPmediator來實現特定的武器裝備和作戰人員之間的交互。
具體實現見圖4。
應用中介者模式有以下優點:
1) 減少了子類生成
中介者將原來分布于不同武器裝備和作戰人員類WPcolleague內部的行為集中到一起,改變這些行為只需生成WPmediator的子類即可。
2) 將各武器裝備和作戰人員類WPcolleague解耦
WPmediator有利于各WPcolleague之間的松耦合,可以獨立地改變和復用各WPcolleague和WPmediator類。
3) 簡化了對象協議
用WPmediator和WPcolleague之間的一對多的交互來代替多對多的交互,更容易理解、維護和擴展。
3.2 顯示層的設計與實現
將顯示介面定義為觀察者Observer,將分別屬于紅藍軍雙方的武器裝備及作戰人員定義為目標Subject,當Subject狀態發生改變時,所有依賴于它的對象都會得到通知并自動更新。因為這種依賴關系可能是極為復雜的,所以我們通過建立目標和觀察者之間的中介者來解決這一問題,方法見紅藍軍模塊對抗的設計與實現。
其結構圖如圖5。
由于顯示層和作戰要素不是緊密耦合的,它們可以屬于一個系統中的不同抽象層次。一個處于較低層次的目標對象可以與一個處于較高層次的觀察者通信并通知它,這樣就保持了系統層次的完整。
4 結束語
本文通過引入設計模式,實現顯示層和數據層的解耦,把一對多對象之間的通知依賴關系變得更為松散,減少了開發的工作量和出現錯誤的概率,同時大大地提高了系統的靈活性、可維護性和可擴展性,也使軟件的復用性得到了增強。
參考文獻:
[1] Gamma E,Helm R.設計模式:可復用面向對象軟件的基礎[M].北京:機械工業出版社,2002.
[2] 蔡延曦,張卓,孫琰.基于MAS的武器裝備體系對抗模型與實現[J].科學技術與工程,2008,15(8):2611-2613.
[3] 劉揚,李京,朱文泉,等.模擬對抗演練系統可視化部分設計與實現[J].計算機應用,2007,27(z1):1001-9081.