桌面端軟件設計經驗總結


軟件的基本架構

1、MVC簡介

對於工業上的桌面端軟件來說,主要的功能就是通過獲取用戶的操作來處理后台的數據並在界面上進行呈現。對於這種軟件需求,最經典的應用就是MVC架構,可以在圖1中粗略展示MVC框架的設計思想。

這里寫圖片描述

這里寫圖片描述

                                圖1、MVC框架


2、實際中需要解決的問題

     軟件的設計需求就是實時獲取用戶的操作,比如查詢條件的改變,測量條件的改變,此時我們需要立刻獲取用戶的輸入並實時改變后台的測量方法及界面顯示的結果。同時考慮到需求的變動以及界面的實時顯示等原因,我們在軟件設計之初就要將model-view-controller三者分離開,如果我們僅僅在單個函數中處理一個用戶邏輯,不僅無法做到model和view的聯動,在代碼需要修改或者重構的時候也會有很大的問題,導致一處的小改動造成整個軟件的變動,也就是高耦合,低內聚的形式。

     為了解決上述問題,使得軟件能及時處理用戶界面輸入—>后台數據改變—>用戶界面變化這一需要,我們便有了MVC框架。MVC將軟件的基本結構分為三個部分,即Model數據層,View界面層,兩者之間通過controller來連接。當我們的視圖部分有了用戶請求之后,控制器獲取用戶的輸入信息,經過判斷之后決定哪些數據模型需要改變,當數據模型改變之后,會給控制器發出完成數據改變的信號,然后控制器便會選擇哪些視圖需要更新,視圖部分會解釋並在界面上顯示更新后的數據模型。

這里寫圖片描述

當我們構建好了模型-視圖-控制器之間的邏輯關系,由控制器決定好model與view之間的關聯關系之后,我們的重心就重模型與視圖之間的連接關系中解放出來,着重於處理數據模型的改動,這樣只需要改動模型,相應的視圖部分也會發生變化,當數據需要再次顯示的時候我們只需要將對應的數據傳入controlller即可以實時顯示視圖更新。


3、軟件架構

     由於軟件的復雜性,我們可能有多重數據,多種視圖需要處理,那么我們就需要將軟件的各個部分分割開,每一個部分都是一個單獨的小型mvc框架,不同的mvc之間通過controller來進行通信。

  • 數據與界面改動的處理

     我的做法是將所有數據模型的controller抽象化為project,將每個不同的model作為project的屬性,不同的model之間可以進行連接,當其中一個model改變時,與其相連接的model也會發生改變,同時每個model由project來更新,project發出改變信號,model也會隨着project的更新信號發出更新信號。舉一個例子,我們軟件需要對不同的測量方法做出不同的數據處理,那么在界面上用戶對測量方式做了改變之后,project中對應測量方法的數據會發生改變,實際上通過project來進行測量方法的更新,測量方法這個model會發出changed信號,然后我們將project中該信號綁定到與該model對應的controller,比如Measure_controller中,然后measure_controller會做出相應的改變,並通知其measure_model做出改變,使用不同的測量公式來計算。流程可以簡化如下:
Project–>projectItem–>projectProperty

測量方法改變(視圖中)—>measure_property重新賦值—>實際調用父類item的賦值–>實際調用父類project的賦值–>project更新其子類(字典形式存儲)的值,然后依次向下發出changed信號–>與project.measure.changed信號綁定的controller接受到changed信號–>更新measure方法(如果涉及視圖變化便將其綁定到相應的視圖變化操作中),這樣就完成了基本的軟件流程,其余部分的設計方法也來源於此。

軟件設計的其他部分比如用戶設置部分,數據存儲與導出部分先填個坑,日后再補…


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com