成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python之MVC

WelliJhon / 1186人閱讀

摘要:層是將生成的文件轉(zhuǎn)化成代碼,不直接修改層的代碼實(shí)現(xiàn)對數(shù)據(jù)庫的操作,并。作為中間層,調(diào)用層的方法獲取結(jié)果,完成邏輯功能,再傳遞給層實(shí)現(xiàn)數(shù)據(jù)渲染。我選擇將層作為一個(gè)部件類,裝配到層,原先的和的關(guān)系不變。

了幾個(gè)小項(xiàng)目,在幫助同事的時(shí)候發(fā)現(xiàn),每個(gè)人對MVC這種設(shè)計(jì)模式的理解各有千秋。
我對于MVC的理解是M即Model,指的是數(shù)據(jù)庫層面,V即View,指的是視圖層面,至于C即Control,則是代碼的邏輯部分。
項(xiàng)目背景介紹,使用QT5寫Gui,Mysql作為數(shù)據(jù)庫。
我采用C繼承V,M繼承C的模式來實(shí)現(xiàn)MVC。view層是將QT生成的ui文件轉(zhuǎn)化成python代碼,不直接修改view層的代碼;model實(shí)現(xiàn)對數(shù)據(jù)庫的CRUD操作,并return。control作為中間層,調(diào)用model層的方法獲取結(jié)果,完成邏輯功能,再傳遞給view層實(shí)現(xiàn)數(shù)據(jù)渲染。

# 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層,當(dāng)我調(diào)用model層,也就是control的子類的方法時(shí),它是不存在的,所以我得先聲明一個(gè)空方法。

#control.py    
class Control(View):
    pass
    
    def do_something(self):
        data = self.get_data()
        self.render_view(data)
        
    def get_data(self):
        pass

但達(dá)到一定量的代碼量時(shí),發(fā)現(xiàn)control層的pass方法(方法體內(nèi)只有pass)越來越多,覺得這樣不妥呀~,而且當(dāng)我要測試數(shù)據(jù)庫交互是否正常時(shí),也就是測試model層的代碼,總是會彈出它爸爸的爸爸,也就是view層寫的Gui,導(dǎo)致感覺非常難受。

于是乎,選擇重構(gòu),前后花了兩周不到的時(shí)間,復(fù)用了部分邏輯,代碼從18K+降到了11K左右。
我選擇將model層作為一個(gè)部件類,裝配到control層,原先的view和control的關(guān)系不變。

# 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層至此和邏輯徹底分離,測試數(shù)據(jù)庫交互方便多了,直接在model層下寫個(gè)main方法就可以了,而且針對control層可以進(jìn)行復(fù)用,也就是在相同Gui下,我可以在control層實(shí)例化多個(gè)不同的model,根據(jù)業(yè)務(wù)需要調(diào)用不同的model,提升代碼的復(fù)用率。

哇咔咔~~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41139.html

相關(guān)文章

  • 寫這么多系列博客,怪不得找不到女朋友

    摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時(shí)間比較早,而且堅(jiān)持的時(shí)間也比較久,一直到現(xiàn)在也是一直保持著更新狀態(tài)。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時(shí)...

    JerryWangSAP 評論0 收藏0
  • python入門 django入門 (一)

    摘要:本人年開發(fā)經(jīng)驗(yàn),現(xiàn)就職于電信,因工作需要學(xué)習(xí),記錄自己的學(xué)習(xí)記錄。 本人java10年開發(fā)經(jīng)驗(yàn),現(xiàn)就職于電信,因工作需要學(xué)習(xí)python,記錄自己的學(xué)習(xí)記錄。后面也...

    hzc 評論0 收藏0
  • 那些年我看過的書 —— 致敬我的大學(xué)生活 —— Say Good Bye !

    摘要:開頭正式開啟我入職的里程,現(xiàn)在已是工作了一個(gè)星期了,這個(gè)星期算是我入職的過渡期,算是知道了學(xué)校生活和工作的差距了,總之,盡快習(xí)慣這種生活吧。當(dāng)時(shí)是看的廖雪峰的博客自己也用做爬蟲寫過幾篇博客,不過有些是在前人的基礎(chǔ)上寫的。 showImg(https://segmentfault.com/img/remote/1460000010867984); 開頭 2017.08.21 正式開啟我...

    xiaoqibTn 評論0 收藏0
  • Laravel 菜鳥晉級

    摘要:用也有三四個(gè)月了,雖然是兼職開發(fā),但是使用的頻率非常之高,畢竟是產(chǎn)品化的一個(gè)項(xiàng)目。第二階段數(shù)據(jù)庫和開發(fā)了比較多的功能之后,會發(fā)現(xiàn)需要大量的測試數(shù)據(jù),這時(shí)候和就該大顯身手了。 用Laravel也有三四個(gè)月了,雖然是兼職開發(fā),但是使用的頻率非常之高,畢竟是產(chǎn)品化的一個(gè)項(xiàng)目。在這期間,也踩了無數(shù)的坑,走了很多彎路,所以準(zhǔn)備把最近的感悟記錄下來,方便后來者。 第一階段:簡單的增刪改查 這是最...

    YacaToy 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<