傳統報表系統,通常是針對某個商業領域使用,其使用的報表格式往往在設計時由設計人員已經定做成模版的形式存儲在模版庫中,用戶使用時直接從模版庫讀取,處理方式也僅限于該領域內;雖然在一定程度上該解決方法帶來了一定治理上的便宜,可對于現代企業用戶來說,報表格式單一已經局限了報表只能作為記賬簿來使用,使得報表的可塑性差,后期維護艱難,難以適應生產過程的多樣性和變化性,無法滿足大型企業不斷擴充的適應性、智能型的要求,非凡是當業務領域變化時,原有的報表系統往往很難支持新業務數據的治理分析,要進行大量的重新開發工作。
在本通用報表的設計中,將報表框架與報表數據分離開,用戶即能根據自己的需要隨意繪制表格,又能按照業務要求自主的選擇數據來源。一旦框架和數據來源定義完畢,系統可以自動生成所需要的報表。為了經濟的達到方便使用的目的,必須吸收先進的軟件開發思想,采用優秀的軟件開發方法以提高軟件質量和軟件的重用性,其中提高軟件的重用性是減少開發成本的要害。
本文主要介紹MVC設計模式在通用報表系統開發中的應用,給出了具體問題相應的解決辦法,提高了軟件的通用性和擴展性。
2 設計模式
設計模式是設計面向對象軟件的過程中記錄的知識和經驗,用一系列類結構和對象來具體描述其含義。設計模式的目的就是復用這些面向對象設計的解決方案,根據具體應用完成具體的設計以及便于這些抽象解決方案的積累和交流。與不使用設計模式的軟件系統相比,一個大量使用設計模式的軟件系統的對象建模更加合理,對象間的耦合度更小,效率、可靠性、可升級性、并發性、平行性和分布性更高,更能獲得高層次的設計復用和代碼復用。
設計模式概念最先來自于城市建筑專家對建筑模式的定義“每一個模式描述了在人們四周不斷反復發生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次的使用該方案而不必做重復勞動”。這種建筑上的模式思想在面向對象的設計模式中同樣適用,模式的核心就在于提供了相關問題的解決方案。設計模式確定了所包含的類和實例,它們的角色、協作方式以及職責分配。它通過刻畫部件靜態和動態結構及其之間的合作關系,成功地應用于解決商業數據處理、電子通信、圖形用戶界面、數據庫、分布式通信軟件等軟件構造中的問題。
一般而言,設計模式有4個要素:①模式名稱:用來描述問題、解決方案和效果。②問題:描述可以在什么時候使用設計模式。③解決方案:描述了設計模式的組成部分,它們之間的相互關系及各自的職責和協作方式。④效果:描述了模式應用的效果及使用模式應該權衡的問題。一個設計模式命名抽象確定了一個通用設計結構的主要方面,這些設計結構能用來構造可重用的面向對象設計。
我們在報表系統中主要使用了模型-視圖-控制器設計模式(MVC)、觀察者(Observer)、適配器模式(Adapter)以及橋接(Bridge)這幾種設計模式。
3 設計模式的應用
3.1 模型-視圖-控制器(MVC)
報表系統中為了方便用戶對數據的分析和使用,同一業務數據經常需要多種視圖呈現,即一個表格對象和一個柱狀圖對象可使用不同的表示形式描述同一個應用數據對象的消息。表格對象和柱狀對象并不知道對方的存在,這樣使用戶可以根據需要單獨復用表格或柱狀圖;當用戶改變比表格中的信息時,柱狀圖能立即反映這一變化,這一行為意味著表格和柱狀圖都依靠于數據對象。早期的圖形化程序設計經常圍繞著事件驅動的用戶界面來組織,這樣的直接后果就是數據處理、程序功能與顯示代碼完全糾結在一起。大型的圖形化程序中一個數據通常對應多種表示與處理方式,把特定界面綁定到應用程序上嚴重降低了程序的靈活性,使得一個很小的改動也牽扯到大量的代碼,增加了程序開發與維護的工作量。20世紀70年代,MVC模式在small talk 80的GUI設計中被提出,并且描述了不同部分的對象之間的通信方式,使它們不必卷入彼此的數據模型開發方法中,使程序結構變得清楚而靈活。
MVC模式包括三個部分:模型(Model)、視圖(View)和控制器(Controller),分別對應于內部數據、數據表示和輸入輸出控制部分。模型是與問題相關數據的邏輯抽象,代表對象的內在屬性,是整個模型的核心。它采用面向對象的方法,將問題領域中的對象抽象為應用程序對象,在這些抽象的對象中封裝了對象的屬性和這些對象所隱含的邏輯。視圖是模型的外在表現,一個模型可以對應一個或者多個視圖,如圖形用戶界面視圖、命令行視圖、API視圖;或按使用者分類:新用戶視圖、熟練用戶視圖等。視圖具有與外界交互的功能,是應用系統與外界的接口:一方面它為外界提供輸入手段,并觸發應用邏輯運行;另一方面,它又將邏輯運行的結果以某種形式顯示給外界??刂破魇悄P团c視圖的聯系紐帶,控制器提取通過視圖傳輸進來的外部信息,并將用戶與View的交互轉換為基于應用程序行為的標準業務事件,再將標準業務事件解析為Model應執行的動作(包括激活業務邏輯或改變Model的狀態)。同時,模型的更新與修改也將通過控制器來通知視圖,從而保持各個視圖與模型的一致性。
實現MVC模式時面對的主要問題是Model和View的關系,在設計模式中的Observer模式很好的描述了如何建立這種關系。這一模式中要害的對象是目標(subject)和觀察者(observer)。一個目標可以有多個依靠它的觀察者;一旦目標發生變化,所有依靠它的觀察者都得到通知,并做出響應,即每個觀察者都將查詢目標進行更新,以保證和目標的狀態同步。這種模式答應我們獨立的改變目標和觀察者;用戶可以單獨復用目標對象而無需同時復用其觀察者,反之亦然。這種模式可以在不改動目標和其他觀察者的前提下增加觀察者。
在報表系統中,目標即為業務數據,觀察者定義為在用戶界面上的顯示視圖。顯示視圖是由其相關的業務數據決定,當業務數據發生變化時,視圖也將發生變化。同一業務數據會有多種顯示視圖;相同類型的視圖也可以表達不同的業務數據。而且可以根據需要在任意時刻增加和刪除顯示視圖,大大提高了報表系統的通用性。
新聞熱點
疑難解答