摘要:層是將生成的文件轉化成代碼,不直接修改層的代碼實現對數據庫的操作,并。作為中間層,調用層的方法獲取結果,完成邏輯功能,再傳遞給層實現數據渲染。我選擇將層作為一個部件類,裝配到層,原先的和的關系不變。
寫了幾個小項目,在幫助同事的時候發現,每個人對MVC這種設計模式的理解各有千秋。
我對于MVC的理解是M即Model,指的是數據庫層面,V即View,指的是視圖層面,至于C即Control,則是代碼的邏輯部分。
項目背景介紹,使用QT5寫Gui,Mysql作為數據庫。
我采用C繼承V,M繼承C的模式來實現MVC。view層是將QT生成的ui文件轉化成python代碼,不直接修改view層的代碼;model實現對數據庫的CRUD操作,并return。control作為中間層,調用model層的方法獲取結果,完成邏輯功能,再傳遞給view層實現數據渲染。
# view.py class View(QDialog): pass def render_view(self, data): # render view pass # control.py class Control(View): pass def do_something(self): data = self.get_data() self.render_view(data) # model.py class Model(Control): pass def get_data(self): return "something"
由于model層繼承于control層,當我調用model層,也就是control的子類的方法時,它是不存在的,所以我得先聲明一個空方法。
#control.py class Control(View): pass def do_something(self): data = self.get_data() self.render_view(data) def get_data(self): pass
但達到一定量的代碼量時,發現control層的pass方法(方法體內只有pass)越來越多,覺得這樣不妥呀~,而且當我要測試數據庫交互是否正常時,也就是測試model層的代碼,總是會彈出它爸爸的爸爸,也就是view層寫的Gui,導致感覺非常難受。
于是乎,選擇重構,前后花了兩周不到的時間,復用了部分邏輯,代碼從18K+降到了11K左右。
我選擇將model層作為一個部件類,裝配到control層,原先的view和control的關系不變。
# view.py class View(QDialog): pass def render_view(self, data): # render view pass # control.py class Control(View): def __init__(self): super().__init__() self.model = Model() pass def do_something(self): data = self.model.get_data() self.render_view(data) # model.py class Model(object): pass def get_data(self): return "something"
這樣處理后,我的model層至此和邏輯徹底分離,測試數據庫交互方便多了,直接在model層下寫個main方法就可以了,而且針對control層可以進行復用,也就是在相同Gui下,我可以在control層實例化多個不同的model,根據業務需要調用不同的model,提升代碼的復用率。
哇咔咔~~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41139.html
摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時間比較早,而且堅持的時間也比較久,一直到現在也是一直保持著更新狀態。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時...
摘要:本人年開發經驗,現就職于電信,因工作需要學習,記錄自己的學習記錄。 本人java10年開發經驗,現就職于電信,因工作需要學習python,記錄自己的學習記錄。后面也...
摘要:開頭正式開啟我入職的里程,現在已是工作了一個星期了,這個星期算是我入職的過渡期,算是知道了學校生活和工作的差距了,總之,盡快習慣這種生活吧。當時是看的廖雪峰的博客自己也用做爬蟲寫過幾篇博客,不過有些是在前人的基礎上寫的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開頭 2017.08.21 正式開啟我...
摘要:用也有三四個月了,雖然是兼職開發,但是使用的頻率非常之高,畢竟是產品化的一個項目。第二階段數據庫和開發了比較多的功能之后,會發現需要大量的測試數據,這時候和就該大顯身手了。 用Laravel也有三四個月了,雖然是兼職開發,但是使用的頻率非常之高,畢竟是產品化的一個項目。在這期間,也踩了無數的坑,走了很多彎路,所以準備把最近的感悟記錄下來,方便后來者。 第一階段:簡單的增刪改查 這是最...
閱讀 1245·2023-04-25 18:57
閱讀 2127·2023-04-25 16:28
閱讀 3926·2021-11-24 09:39
閱讀 3631·2021-11-16 11:45
閱讀 1817·2021-10-13 09:40
閱讀 1260·2019-08-30 15:52
閱讀 1716·2019-08-30 10:57
閱讀 657·2019-08-29 16:55