日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python面向?qū)ο缶幊獭裁词敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)

系統(tǒng) 1820 0

Python面向?qū)ο缶幊獭裁词敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)

一、面向過(guò)程的程序設(shè)計(jì)

1、概念

核心是“過(guò)程”二字,“過(guò)程”指的是解決問(wèn)題的步驟,即先干什么再干什么......基于面向過(guò)程設(shè)計(jì)程序就好比在設(shè)計(jì)一條流水線,是一種機(jī)械式的思維方式。若程序一開(kāi)始是要著手解決一個(gè)大的問(wèn)題,面向過(guò)程的基本設(shè)計(jì)思路就是把這個(gè)大的問(wèn)題分解成很多個(gè)小問(wèn)題或子過(guò)程,這些子過(guò)程在執(zhí)行的過(guò)程中繼續(xù)分解,直到小問(wèn)題足夠簡(jiǎn)單到可以在一小步驟范圍內(nèi)解決。

2、優(yōu)點(diǎn)

復(fù)雜的問(wèn)題流程化,進(jìn)而簡(jiǎn)單化(一個(gè)復(fù)雜的問(wèn)題,分成一個(gè)個(gè)小的步驟去實(shí)現(xiàn),實(shí)現(xiàn)小的步驟將會(huì)非常簡(jiǎn)單)

舉個(gè)典型的面向過(guò)程的例子, 寫(xiě)一個(gè)數(shù)據(jù)遠(yuǎn)程備份程序, 分三步,本地?cái)?shù)據(jù)打包,上傳至云服務(wù)器,測(cè)試備份文件可用性。

          
            import os

def data_backup(folder):
    print("找到備份目錄: %s" %folder)
    print('正在備份......')
    zip_file='/tmp/backup20181103.zip'
    print('備份成功,備份文件為: %s' %zip_file)
    return zip_file

def cloud_upload(file):
    print("\nconnecting cloud storage center...")
    print("cloud storage connected.")
    print("upload file...%s...to cloud..." %file)
    link='http://www.xxx.com/bak/%s' %os.path.basename(file)
    print('close connection.....')
    return link

def data_backup_test(link):
    print("\n下載文件: %s , 驗(yàn)證文件是否無(wú)損" %link)

def main():
    #步驟一:本地?cái)?shù)據(jù)打包
    zip_file = data_backup("c:\\users\\alex\歐美100G高清無(wú)碼")

    #步驟二:上傳至云服務(wù)器
    link=cloud_upload(zip_file)

    #步驟三:測(cè)試備份文件的可用性
    data_backup_test(link)

if __name__ == '__main__':
    main()
          
        

3、缺點(diǎn)

一套流水線或者流程就是用來(lái)解決一個(gè)問(wèn)題,比如生產(chǎn)汽水的流水線無(wú)法生產(chǎn)汽車,即便是能,也得是大改,改一個(gè)組件,與其相關(guān)的組件都需要修改,牽一發(fā)而動(dòng)全身,擴(kuò)展性極差。

比如我們修改了步驟二的函數(shù)cloud_upload的邏輯,那么依賴于步驟二結(jié)果才能正常執(zhí)行的步驟三的函數(shù)data_backup_test相關(guān)的邏輯也需要修改,這就造成了連鎖反應(yīng),而這一弊端會(huì)隨著程序的增大而變得越發(fā)的糟糕,我們程序的維護(hù)難度將會(huì)越來(lái)越大。

          
            import os

def data_backup(folder):
    print("找到備份目錄: %s" %folder)
    print('正在備份......')
    zip_file='/tmp/backup20181103.zip'
    print('備份成功,備份文件為: %s' %zip_file)
    return zip_file

def cloud_upload(file): #加上異常處理,在出現(xiàn)異常的情況下,沒(méi)有l(wèi)ink返回
    try:
        print("\nconnecting cloud storage center...")
        print("cloud storage connected.")
        print("upload file...%s...to cloud..." % file)
        link = 'http://www.xxx.com/bak/%s' % os.path.basename(file)
        return link
    except Exception:
        print('upload error')
    finally:
        print('close connection.....')

def data_backup_test(link): #加上對(duì)參數(shù)link的判斷
    if link:
        print("\n下載文件: %s , 驗(yàn)證文件是否無(wú)損" %link)
    else:
        print('\n鏈接不存在')
def main():
    #步驟一:本地?cái)?shù)據(jù)打包
    zip_file = data_backup("c:\\users\\alex\歐美100G高清無(wú)碼")

    #步驟二:上傳至云服務(wù)器
    link=cloud_upload(zip_file)

    #步驟三:測(cè)試備份文件的可用性
    data_backup_test(link)

if __name__ == '__main__':
    main()
          
        

4、應(yīng)用場(chǎng)景

面向過(guò)程的程序設(shè)計(jì)思想一般用于那些功能一旦實(shí)現(xiàn)之后就很少需要改變的場(chǎng)景, 如果你只是寫(xiě)一些簡(jiǎn)單的腳本,去做一些一次性任務(wù),用面向過(guò)程的方式是極好的,著名的例子有Linux內(nèi)核,git,以及Apache HTTP Server等。但如果你要處理的任務(wù)是復(fù)雜的,且需要不斷迭代和維護(hù) 的, 那還是用面向?qū)ο笞罘奖懔恕?

二、面向?qū)ο蟮某绦蛟O(shè)計(jì)

1、概念

核心是“對(duì)象”二字,要理解對(duì)象為何物,必須把自己當(dāng)成上帝,在上帝眼里,世間存在的萬(wàn)物皆為對(duì)象,不存在的也可以創(chuàng)造出來(lái)。程序員基于面向?qū)ο笤O(shè)計(jì)程序就好比如來(lái)設(shè)計(jì)西游記,如來(lái)要解決的問(wèn)題是把經(jīng)書(shū)傳給東土大唐,如來(lái)并沒(méi)有考慮問(wèn)題的解決流程,而是設(shè)計(jì)出了負(fù)責(zé)取經(jīng)的師傅四人:唐僧,沙和尚,豬八戒,孫悟空,負(fù)責(zé)騷擾的一群妖魔鬼怪,以及負(fù)責(zé)保駕護(hù)航的一眾神仙,這些全都是對(duì)象,然后取經(jīng)開(kāi)始,就是師徒四人與妖魔鬼怪神仙交互著直到完成取經(jīng)任務(wù)。所以說(shuō)基于面向?qū)ο笤O(shè)計(jì)程序就好比在創(chuàng)造一個(gè)世界,世界是由一個(gè)個(gè)對(duì)象組成,而你就是這個(gè)世界的上帝。

我們從西游記中的任何一個(gè)人物對(duì)象都不難總結(jié)出:對(duì)象是特征與技能的結(jié)合體。比如孫悟空的特征是:毛臉雷公嘴,技能是:七十二變、火眼金睛等。

與面向過(guò)程機(jī)械式的思維方式形成鮮明對(duì)比,面向?qū)ο蟾幼⒅貙?duì)現(xiàn)實(shí)世界而非流程的模擬,是一種“上帝式”的思維方式。

2、優(yōu)點(diǎn)

解決了面向過(guò)程可擴(kuò)展性低的問(wèn)題,這一點(diǎn)我們將在下小節(jié)中為大家驗(yàn)證,需要強(qiáng)調(diào)的是,對(duì)于一個(gè)軟件質(zhì)量來(lái)說(shuō),面向?qū)ο蟮某绦蛟O(shè)計(jì)并不代表全部,面向?qū)ο蟮某绦蛟O(shè)計(jì)只是用來(lái)解決擴(kuò)展性問(wèn)題。

Python面向?qū)ο缶幊獭裁词敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)_第1張圖片

3、缺點(diǎn)

編程的復(fù)雜度遠(yuǎn)高于面向過(guò)程,不了解面向?qū)ο蠖⒓瓷鲜植⒒谒O(shè)計(jì)程序,極容易出現(xiàn)過(guò)度設(shè)計(jì)的問(wèn)題,而且在一些擴(kuò)展性要求低的場(chǎng)景使用面向?qū)ο髸?huì)徒增編程難度,比如管理linux系統(tǒng)的shell腳本程序就不適合用面向?qū)ο笕ピO(shè)計(jì),面向過(guò)程反而更加適合。

4、應(yīng)用場(chǎng)景

當(dāng)然是應(yīng)用于需求經(jīng)常變化的軟件中,一般需求的變化都集中在用戶層,互聯(lián)網(wǎng)應(yīng)用,企業(yè)內(nèi)部軟件,游戲等都是面向?qū)ο蟮某绦蛟O(shè)計(jì)大顯身手的好地方。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 肥东县| 鄂托克旗| 丁青县| 金川县| 陆良县| 蚌埠市| 阜康市| 乐清市| 佛坪县| 泰州市| 南皮县| 常德市| 涞水县| 呼伦贝尔市| 乐山市| 莱西市| 阿克陶县| 武功县| 克东县| 应用必备| 汝城县| 普安县| 永年县| 安庆市| 枣庄市| 嘉善县| 无棣县| 渝北区| 临沧市| 北辰区| 抚宁县| 龙陵县| 舟曲县| 石泉县| 湖北省| 茂名市| 陈巴尔虎旗| 荣昌县| 原平市| 德阳市| 台东县|