任 亮
(中國西南電子技術研究所 成都 610036)
?
三種設計模式在頻率干擾分析軟件中的應用*
任亮
(中國西南電子技術研究所成都610036)
摘要為了提前預警機場多部電臺共同工作時可能出現的相互通信干擾,需要根據電臺的工作參數和干擾分析規則進行頻率干擾分析,并將分析結果進行全員分享。針對實際工程中遇見的問題,筆者主要應用工廠模式實現各條分析規則、適配器模式實現頻率干擾分析軟件與已有的電臺控制軟件的兼容工作,以及應用單件模式實現頻率干擾分析結果的共享。通過三種軟件設計模式的應用,實現了頻率干擾分析的預警功能,并在實際工程應用中得到了較好的使用效果。
關鍵詞頻率干擾分析; 工廠模式; 適配器模式; 單件模式
Class NumberTP319
1引言
當機場地面多部電臺(包括短波電臺、甚高頻電臺和超短波電臺)在復雜多變的電磁環境中同時工作時,時常出現相互通信干擾的問題,造成通信質量下降,影響飛行安全。地面操作人員經常只能根據經驗進行通信模式和通信頻率的規劃和設定[4~5]。為了實現通信干擾的提前預警,筆者在機場通信系統升級改進工程中增加了頻率干擾分析功能,以解決此問題。
增加頻率干擾分析預警的功能主要要面對三方面的問題:
1) 機場每次所需的頻率干擾規則有可能發生變化,以應對不同的天氣情況和工作條件。這就需要地面操作員根據實際情況對頻率干擾分析規則(以下簡稱“規則”)進行動態靈活配置;
2) 在盡量少修改現有電臺監控軟件的基礎上,如何設計頻率干擾分析模塊,使其和現有的電臺監控軟件實現無縫鏈接,達到擴充現有電臺監控軟件功能的目的;
3) 頻率干擾分析的數據和結果需要網絡共享,可以供不同席位的操作員同時查看和參考。
本文提出了一種軟件解決方法,希望能為相關的應用提供有益的借鑒和參考。
2規則的設計與規則組合
為了實現不同天氣情況和工作條件下規則的靈活配置和調用,各項規則需要實現相同的接口,以便于軟件程序調用和組合。基于這種考慮,規則的創建與實現采用了工廠方法(Factory Method)[1~2]。
2.1工廠方法介紹
工廠方法(Factory Method)的意圖在于:定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。其結構如圖1所示。

圖1 工廠模式結構圖
其中:
1) Product:定義工廠方法所創建的對象接口;
2) ConcreteProduct:實現Product接口;
3) Creator:聲明工廠方法,返回一個Product類型的對象。也可以定義一個工廠方法的缺省實現,返回一個缺省的ConcreteProduct對象;
4) ConcreteCreator:重定義工廠方法以創建一個ConcreteProduct實例。
以下情況下適合使用工廠模式:
1) 當一個類不知道它所必須創建的對象的類的時候;
2) 當一個類希望由它的子類來指定它所創建的對象的時候;
3) 當類將創建對象的職責委托給多個幫助子類中的某一個,并且希望將哪一個幫助子類是代理者這一信息局部化的時候。
工廠模式存在兩種不同的實現情況:
1) Creator類是一個抽象類并且不提供它所聲明的工廠方法的實現。這種情況下需要子類來定義實現。這種情況也是我們在實際工程中運用的實現方式;
2) Creator是一個具體的類而且為工廠方法提供一個缺省的實現。它保證了子類的設計者能夠在必要的時候改變父類所實例化的對象的類。
2.2工程中工廠方法的實現
根據實際工程的需要,我們對各條規則進行公共接口的抽象,并將抽象的接口定義在父類CommonInterface中[9]。
公共接口說明:
1) GetDisturbInfo:獲取干擾信息描述;
2) GetRuleName:獲取規則描述;

圖2 CommonInterface類圖
3) GetJoinLinkNumber:參與頻率干擾分析的鏈路(或電臺)數量;
4) GetWorkInfoSign:規則是否需要電臺工作參數的標識,如果需要電臺參數,則需要將電臺工作參數以固定的格式作為參數傳入,以便于后續的頻率干擾分析;
5) SetAnalyseGrade:設置頻率干擾分析強度等級(包括基本規則分析和嚴格規則分析),不同的分析強度包含了不同數量、等級的規則,這根據實際應用中的需要進行動態地配置;
6) Start:規則分析(返回值說明:0:無干擾;1:輕微干擾;2:較強干擾;3:嚴重干擾)。
每一條具體規則作為父類的子類,根據具體的要求和需要各自實現父類公共的接口,并封裝為動態連接庫(Dynamic-Link Library,DLL),規則參數(如規則描述、規則干擾描述、規則等級等)通過XML文件進行配置,實現規則參數的動態配置。應用這種方式來實現規則,也便于規則的后續擴展與補充。
在此基礎上,筆者共設計、實現了23條涵蓋了短波(HF)電臺、甚高頻(VHF)電臺和超短波(UV)電臺相互間的干擾分析規則。作為頻率干擾分析軟件所需的規則素材,在實際應用中根據操作員的意圖和需要進行規則的組合和應用。
2.3規則的組合實現方法
各條具體規則實現后,如何將這些規則組合起來使用,也是需要解決的問題。由于各項規則各自實現了公共接口(見圖2),在規則的組合實現中就找到了實現的方法,這也是采用工廠模式的目的。
2.3.1規則的初始配置
首先要對23條規則進行初始配置。配置具體某條規則的規則描述、干擾信息描述、規則等級等。
2.3.2設定干擾分析等級
操作員根據不同天氣情況和工作條件設定干擾分析的等級。后續的干擾分析將根據該設定值對所有的規則進行遍歷和等級判斷,從而實現了規則的靈活配置和調用。
2.3.3傳遞電臺工作參數
通過父類CommonInterface中GetWorkInfoSign函數將電臺的工作參數傳遞給各項具體規則使用。具體規則根據整機的需要提取適合的工作參數以便于后續的干擾分析使用。
2.3.4規則集合的干擾分析
當操作員開始頻率干擾分析時,軟件流程圖如圖3所示。

圖3 頻率干擾分析流程圖
3與電臺監控軟件的兼容性設計
機場現有的電臺監控軟件集成了短波(HF)電臺、甚高頻(VHF)電臺和超短波(UV)電臺工作參數設置和監視功能。但在設置電臺工作參數時,操作員只能根據經驗或者通信效果來判斷電臺之間是否存在相互干擾,無法預先、直觀地判定干擾性質和干擾強度。
在已實現若干條規則的基礎上,需要擴展現有電臺監控軟件的功能。在控制電臺(包括短波電臺、甚高頻電臺和超短波電臺)時將電臺的工作參數同時傳遞給頻率干擾分析組件,以實時進行電臺間的頻率干擾分析,并將干擾分析結果顯示給操作員供評估。與用戶方交流過程中,用戶方希望盡量少修改現有電臺監控軟件代碼以保持原有軟件的穩定性。為實現這一目的,我們設計了一個軟件模塊,在電臺監控軟件與頻率干擾分析模塊之間架起一座相互通信的“橋梁”。經過分析決定采取適配器(Adapter Method)模式來實現。
3.1適配器方法介紹[7]
適配器方法(Adapter Method)的目的在于:將一個類的接口轉換成客戶希望的另外一個接口,是的原本由于接口不兼容而不能一起工作的那些類可以一起工作。適配器的結構如圖4所示。

圖4 適配器模式結構圖
其中:
1) Client:與符合Target接口的對象協同。在筆者參與的工程中是已經存在的電臺監控軟件;
2) Target:定義Client使用的與特定領域相關的接口;
3) Adapter:適配器類,對Adaptee的接口與Target接口進行適配,在該類中實現已有電臺監控軟件和頻率干擾分析模塊的兼容工作;
4) Adaptee:定義一個已經存在的接口,這個接口需要適配,在參與的工程中是頻率干擾分析類。
Client在Adapter實例上調用一些操作,適配器調用Adaptee的操作來實現這個請求。
以下情況下適用于適配器模式:
1) 想使用一個已經存在的類,但它的接口不符合需求;
2) 想創建一個可復用的類,該類可以與其他不相關的類協同工作;
3) 想使用一些已經存在的子類,但不可能對每一個都進行子類化以匹配它們的接口。
3.2工程中適配器方法的實現
在實際工程中,適配器類實現了電臺監控軟件和頻率干擾分析模塊之間接口轉換的封裝。電臺監控軟件通過適配器類提供的接口實現頻率干擾分析的運行,同時通過界面預先顯示頻率干擾分析的結果,供操作員參考。
通過應用適配器模式,實現了頻率干擾分析類與電臺監控軟件的無縫鏈接,使得以前無法一起工作的電臺監控軟件和頻率干擾分析模塊實現了兼容工作,同時電臺監控軟件的修改工作量也壓縮到了最小程度。
4頻率干擾分析的共享
為了實現頻率干擾分析數據和結果的共享,以供不同席位的操作員同時查看和參考,我們采用了單件模式(Singleton Method)來實現此功能。
4.1單件模式介紹
單件模式保證了一個類僅有一個實例,并提供了一個訪問它的全局訪問點。單件模式的結構圖如圖5所示。

圖5 單件模式結構圖
其中:
1) Singleton:定義了一個Instance操作,允許客戶訪問它的唯一實例。Instance是一個類操作,負責創建它自己的唯一實例。
客戶只能通過Singleton的Instance操作訪問一個Singleton的實例。單件模式的優點主要包括:
1) 對唯一實例的受控訪問:Singleton類封裝它的唯一實例,它可以嚴格的控制客戶怎樣以及何時訪問它;
2) 縮小名空間:Singleton模式是對全局變量的一種改進,避免了那些存儲唯一實例的全局變量污染名空間;
3) 允許對操作和表示的精化:Singleton類可以有子類,而且用這個擴展類的實例來配置一個應用是很容易的事情;
4) 允許可變數目的實例:這種模式使得根據用戶的需求進行修改變得非常簡單可行。
4.2工程中單件模式的實現
在C++中我們采用Singleton類的靜態成員函數Instance來定義這個類操作,同時還定義了一個靜態成員變量m_Instance,它包含了一個指向它的唯一實例的指針。
CRuleMediator類定義如下[3,6]。
class CRuleMediator
{
public:
static CRuleMediator* Instance();
virtual ~CRuleMediator();
protected:
CRuleMediator();
private:
static CRuleMediator* m_Instance; //單鍵實例對象指針
}
相應的實現是[8,10]
CRuleMediator* CRuleMediator::m_Instance = 0;
CRuleMediator* CRuleMediator::Instance()
{
if(m_Instance == 0)
{
m_Instance = new CRuleMediator;
}
return m_Instance;
}
通過單件模式,不同席位的操作員通過調用CRuleMediator類的全局訪問點Instance()訪問該類的唯一實例m_Instance。從而實現了頻率干擾分析數據和結果的共享。
5頻率干擾分析軟件的效果
通過應用工廠模式、適配器模式和單件模式,實現了頻率干擾分析規則的封裝、與電臺監控軟件的兼容工作和頻率干擾信息的共享,在機場電臺改進升級的工程項目中達到了很好的效果。圖6為頻率干擾分析結果的截屏。

圖6 頻率干擾分析的效果
6結語
本文以作者參與的一個工程項目為背景,著重討論了頻率干擾分析模塊的軟件模式設計。主要應用了工廠模式、適配器模式和單件模式來實現。在此基礎上,開發出符合項目需要的頻率干擾分析軟件,并在實際應用中獲得了較好的效果。
參 考 文 獻
[1] Erich Gamma Richard Helm Ralph Johnson John Vlissides.設計模式[M].北京:機械工業出版社,2007:458-466.
Erich Gamma Richard Helm Ralph Johnson John Vlissides. Design Patterns[M]. Beijing: China Machine Press,2007:458-466.
[2] Martin Fowler.重構—改善既有代碼的設計[M].北京:中國電力出版社,2008:186-197.
Martin Fowler. Refactoring: Improving the Design of Existing Code[J]. Beijing: China Infopower Press,2008:186-197.
[3] David J. Kruglinski. Visual C++技術內幕[M].第四版.北京:清華大學出版社,2003:286-290.
David J. Kruglinski. Visual C++[M]. 4th Edition. Beijing: Tsinghua Press,2003:286-290.
[4] 楊萬全,熊淑華,等.現代通信技術[M].成都:四川大學出版社,2000:81-91.
YANG Wanquan, XIONG Shuhua. Modern Communication Technology[M]. Chengdu: Sichuan University Press,2000:81-91.
[5] 曹志剛,錢亞生.現代通信原理[M].北京:清華大學出版社,1992:100-115.
CAO Zhigang, QIAN Yasheng. Modern Communication Principle[M]. Beijng: Tsinghua Press,1992:100-115.
[6] Stephen R. Davids. C++編程指南[M].北京:電子工業出版社,1996:121-125.
Stephen R. Davids. C++ Programme Guide[M]. Beijing: Publishing House of Electronics Infustry,1996:121-125.
[7] Kent Beck.重構過程如何運作[M].北京:中國電力出版社,1997:19-24.
Kent Beck. Make it Run, Make it Right: Design Through Refactoring[M]. Beijing: China Infopower Press,1997:19-24.
[8] Bertrand Meyer.面向對象設計[M].北京:清華大學出版社,1997:126-128.
Bertrand Meyer. Object Oriented Software Construcion[M]. Beijing: Tsinghua Press,1997:126-128.
[9] 官章全,劉加明.Visual C++ 6.0類庫大全[M].北京:電子工業出版社,1999:243-250.
GUAN Zhangquan, LIU Jiaming. Visual C++ 6.0 Microsoft Foundation Class Library[M]. Beijing: Publishing House of Electronics Infustry,1999:243-250.
[10] 錢能.C++程序設計[M].北京:清華大學出版社,2003:349-352.
QIAN Neng. C++ Programme Design[M]. Beijing: Tsinghua Press,2003:349-352.
Application of Three Design Patterns in Frequency-Disturb Analysis Software
REN Liang
(Southwest China Institute of Electronic Technology, Chengdu610036)
AbstractIn order to analyse the condition of frequency-disturb among broadcasting stations in airport when these stations do work in double harness. And sharing these analysis result are needed. Aiming at the problems encountered in practical engineering, factory method is applied to realize each analysis rule, adapter method is applied to realize the cooperation work between the frequency-disturb analysis software and the broadcasting station control software, and singleton method is applied in sharing of frequency interference analysis result. Though the application of three kinds of software design patterns, the early warning function of frequency interference analysis is realized, the frequency-disturb analysis software do the work well in project.
Key Wordsfreq-disturb analyse, factory method, adapter method, singleton method
* 收稿日期:2015年11月2日,修回日期:2015年12月13日
作者簡介:任亮,男,碩士,研究方向:通信電子技術。
中圖分類號TP319
DOI:10.3969/j.issn.1672-9722.2016.05.042