成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

初探面向?qū)ο缶幊讨畂op與設(shè)計(jì)模式

BingqiChen / 2621人閱讀

摘要:為什么要采用面向?qū)ο缶幊探鉀Q問題更容易設(shè)計(jì)計(jì)算機(jī)程序就是為了解決人類的問題。面向?qū)ο缶幊绦枰獙I(yè)務(wù)及代碼的架構(gòu)是有一定的要求的。

1. 編程方式

我們目前的編程方式大體可以有以下三種編程方式:

順序編程

過程式編程

面向?qū)ο缶幊?/p>

在講面向?qū)ο缶幊虝r(shí)先講一下什么是順序編程,什么是過程式編程,什么是面向?qū)ο缶幊蹋?/p>

順序編程: 就是只用一個(gè)單線程去執(zhí)行一段代碼,執(zhí)行過程根據(jù)代碼依次從上到下按順序執(zhí)行各種指令操作

過程式編程:過程式的編程中心是圍繞著代碼,比如當(dāng)程序執(zhí)行到某一個(gè)位置的時(shí)候回調(diào)用一個(gè)其他的方法來實(shí)現(xiàn)剩余的業(yè)務(wù)邏輯,然后程序繼續(xù)往下執(zhí)行,這就是過程式編程。通俗一點(diǎn)使用函數(shù)的方式來編寫代碼都屬于過程式編程,更深層次的,例如某些PHP開發(fā)者雖然使用了類的概念來寫程序,但是還是區(qū)域過程式的方式編程,doris周圍的大多數(shù)同事就是如此,包括doris在了解面向?qū)ο缶幊讨耙餐瑯硬捎眠^程式的方式寫程序。

面向?qū)ο缶幊蹋和ㄋ椎闹v就是就是在寫程序時(shí),我們程序員自己設(shè)計(jì)出N多個(gè)對象(工作者)出來分工合作一起完成某項(xiàng)任務(wù),這就是面向?qū)ο缶幊獭_@里說設(shè)計(jì)多個(gè)對象,那么我們?nèi)绾稳ピO(shè)計(jì)?這就是doris接下來的一段時(shí)間里與大家一起分享doris對面向?qū)ο蟮囊恍┛捶捌綍r(shí)工作中的一些總結(jié)了。

2. 為什么要采用面向?qū)ο缶幊?/b> 2.1 解決問題更容易

設(shè)計(jì)計(jì)算機(jī)程序就是為了解決人類的問題。其策略就是講大的問題拆分成小的問題來逐一解決,而面向?qū)ο蟠篌w的講就是這個(gè)原理,將大的復(fù)雜的問題進(jìn)行拆分由小的個(gè)體來完成然后再進(jìn)行組裝就可以把這個(gè)復(fù)雜的問題逐一破解,這就是模塊化設(shè)計(jì)風(fēng)格。你可能認(rèn)為模塊化看起來并不太難。沒錯(cuò),問題越復(fù)雜,模塊化就越有意義。所以O(shè)OP編程的出發(fā)點(diǎn)絕對不是要把復(fù)雜的問題更復(fù)雜化,反而是是要把復(fù)雜的問題簡單化。即使是最困難的編程問題也可以采用這種分而治之的策略來解決。

2.2 開發(fā)和修改速度更快

在團(tuán)隊(duì)合作中特別能體現(xiàn)面向?qū)ο缶幊痰膬?yōu)越性,我們可以大的問題拆分成很多個(gè)小的問題,模塊的目的就是解決比較復(fù)雜的問題的某一方面,這樣我們就得到了面向?qū)ο缶幊痰氖滓瓌t之一(即單一職責(zé)原則),并將這些小問題進(jìn)行組裝(意思就是代碼架構(gòu))起來,然后在把這些小的問題分配給其它開發(fā)人員,進(jìn)行開發(fā),這樣在開效率上可以大大提高開發(fā)效率,并且開發(fā)者之間的代碼沖突也會降到最低。

類似于OPP,過程式編程也是用了模塊和重用。不過,過程式編程沒有提供類(利用類,貶稱任務(wù)可以打包到對象)。類對象(類實(shí)例)可以處理自己的數(shù)據(jù)結(jié)構(gòu),這是函數(shù)無法多帶帶做到的,因此,如果采用過程式編程,完成大型任務(wù)往往需要很長時(shí)間的序列。另外,采用過程式編程時(shí),團(tuán)隊(duì)合作也比較困難,因?yàn)椴煌膱F(tuán)隊(duì)成員無法像采用OPP那樣輕松地處理獨(dú)立單相互關(guān)聯(lián)的類。

3. 為什么面向?qū)ο笕绱酥y

如果問doris為什么面向?qū)ο竽敲措y就好比問doris為什么架構(gòu)師工資那么高且沒幾個(gè)人達(dá)得到是同一個(gè)問題。因?yàn)槊嫦驅(qū)ο缶幊淌切枰幊探?jīng)驗(yàn)的一個(gè)提煉的,如果經(jīng)驗(yàn)越豐富那么面向?qū)ο蟪绦虻脑O(shè)計(jì)就越靈活,這里說的經(jīng)驗(yàn)是指使用面向?qū)ο缶幊痰慕?jīng)驗(yàn),而不是上文提到的順序編程和過程式編程那些經(jīng)驗(yàn)。面向?qū)ο缶幊绦枰獙I(yè)務(wù)及代碼的架構(gòu)是有一定的要求的。一切程序的設(shè)計(jì)都離不開業(yè)務(wù)邏輯。在學(xué)習(xí)OOP和設(shè)計(jì)模式時(shí),你需要記?。?/p>

設(shè)計(jì)面向?qū)ο筌浖芾щy

設(shè)計(jì)可重用面向?qū)ο筌浖щy

當(dāng)然啦,不能把這些說法作為放棄學(xué)習(xí)OOP和設(shè)計(jì)模式的理由,而應(yīng)當(dāng)由此看出OPP和設(shè)計(jì)模式為什么這么有意義。知識會增加技能的價(jià)值,得到知識越困難,說明它就越有價(jià)值。

4. 如何學(xué)習(xí)OOP思想及設(shè)計(jì)模式

不要期望能輕松快速地掌握OOP和設(shè)計(jì)模式,要在你的編程中逐步滲入,一次結(jié)合一點(diǎn),總有一天你會發(fā)現(xiàn)它的價(jià)值所在。過一段時(shí)間后,你會擁有更多的技能,有更深入的理解。你可能會遇到某個(gè)項(xiàng)目,發(fā)現(xiàn)可以在其中重用之前另外一個(gè)項(xiàng)目的大部分程序結(jié)構(gòu)。

5. 面向?qū)ο缶幊袒驹瓌t

我們在使用面向?qū)ο缶幊虝r(shí)一定要記住以下幾個(gè)基本原則(也就是設(shè)計(jì)面向?qū)ο蟪绦虻幕驹瓌t),這樣才能夠更好的理解面向?qū)ο蟮纳钜狻?/p> 5.1 單一職責(zé)原則

本著低耦合、高內(nèi)聚原則,一個(gè)類做一件事。
對于單一職責(zé)原則,其核心思想為:一個(gè)類,最好只做一件事,只有一個(gè)引起它的變化。單一職責(zé)原則可以看做是低耦合、高內(nèi)聚在面向?qū)ο笤瓌t上的引申,將職責(zé)定義為引起變化的原因,以提高內(nèi)聚性來減少引起變化的原因。職責(zé)過多,可能引起它變化的原因就越多,這將導(dǎo)致職責(zé)依賴,相互之間就產(chǎn)生影響,從而大大損傷其內(nèi)聚性和耦合度。通常意義下的單一職責(zé),就是指只有一種單一功能,不要為類實(shí)現(xiàn)過多的功能點(diǎn),以保證實(shí)體只有一個(gè)引起它變化的原因。

5.2 開放封閉原則

當(dāng)我們軟件的實(shí)際應(yīng)用發(fā)生改變時(shí),出現(xiàn)新的需求,就需要我們對模塊進(jìn)行擴(kuò)展,使其能夠滿足新的需求!更改封閉即是在我們對模塊進(jìn)行擴(kuò)展時(shí),勿需對源有程序代碼和DLL進(jìn)行修改或重新編譯文件!這個(gè)原則對我們在設(shè)計(jì)類的時(shí)候很有幫助,堅(jiān)持這個(gè)原則就必須盡量考慮接口封裝,抽象機(jī)制和多態(tài)技術(shù)!通俗的講就是:對擴(kuò)展開放、對修改關(guān)閉

5.3 里氏替換原則(LSP)

意思就是說我們依賴父類接口,在客戶端聲明一個(gè)父類接口,通過其子類來實(shí)現(xiàn),這個(gè)時(shí)候就要求子類必須能夠替換父類所出現(xiàn)的任何地方,這樣做的好處就是,在根據(jù)新要求擴(kuò)展父類接口的新子類的時(shí)候而不影響當(dāng)前客戶端的使用!

5.4 依賴倒置原則

傳統(tǒng)的結(jié)構(gòu)化編程中,最上層的模塊通常都要依賴下面的子模塊來實(shí)現(xiàn),也
稱為高層依賴低層!所以DIP原則就是要逆轉(zhuǎn)這種依賴關(guān)系,讓高層模塊不要依賴低層模塊,所以稱之為依賴倒置原則!通俗一點(diǎn)就是(面向接口編程)

5.5 ISP 接口隔離原則

這個(gè)原則的意思是:使用多個(gè)專門的接口比使用單個(gè)接口要好的多!為了減少接口的定義,將許多類似的方法都放在一個(gè)接口中,最后發(fā)現(xiàn),維護(hù)和實(shí)現(xiàn)接口的時(shí)候花了太多精力,而接口所定義的操作相當(dāng)于對客戶端的一種承諾,這種承諾當(dāng)然是越少越好,越精練越好,過多的承諾帶來的就是你的大量精力和時(shí)間去維護(hù)!

完!

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25553.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍(lán)圖或原型。在中,對象通過對類的實(shí)體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    AaronYuan 評論0 收藏0
  • 【譯】每個(gè)JavaScript 開發(fā)者應(yīng)該了解的10個(gè)面試題

    摘要:避免脆弱的基類問題。紅牌警告沒有提到上述任何問題。單向數(shù)據(jù)流意味著模型是單一的事實(shí)來源。單向數(shù)據(jù)流是確定性的,而雙向綁定可能導(dǎo)致更難以遵循和理解的副作用。原文地址 1. 你能說出兩種對 JavaScript 應(yīng)用開發(fā)者而言的編程范式嗎? 希望聽到: 2. 什么是函數(shù)編程? 希望聽到: 3. 類繼承和原型繼承的不同? 希望聽到 4. 函數(shù)式編程和面向?qū)ο缶幊痰膬?yōu)缺點(diǎn)? ...

    mykurisu 評論0 收藏0
  • 第3章:抽象數(shù)據(jù)類型(ADT)和面向對象編程OOP) 3.4面向對象編程OOP

    摘要:抽象數(shù)據(jù)類型的多個(gè)不同表示可以共存于同一個(gè)程序中,作為實(shí)現(xiàn)接口的不同類。封裝和信息隱藏信息隱藏將精心設(shè)計(jì)的模塊與不好的模塊區(qū)分開來的唯一最重要的因素是其隱藏內(nèi)部數(shù)據(jù)和其他模塊的其他實(shí)施細(xì)節(jié)的程度。 大綱 面向?qū)ο蟮臉?biāo)準(zhǔn)基本概念:對象,類,屬性,方法和接口OOP的獨(dú)特功能 封裝和信息隱藏 繼承和重寫 多態(tài)性,子類型和重載 靜態(tài)與動(dòng)態(tài)分派 Java中一些重要的Object方法設(shè)計(jì)好的類面向...

    Heier 評論0 收藏0

發(fā)表評論

0條評論

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