大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 10個面向?qū)ο笤O(shè)計原則

10個面向?qū)ο笤O(shè)計原則

更新時間:2020-10-15 17:24:13 來源:動力節(jié)點 瀏覽1068次

眾所周知,Java是一門面向?qū)ο笳Z言。而所謂面向?qū)ο螅且环N軟件開發(fā)方法。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計和軟件開發(fā),擴展到如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。隨著,面向?qū)γ娴念I(lǐng)域不斷擴展,面向?qū)ο笤O(shè)計原則也不斷規(guī)范,本文就和大家分享10個面向?qū)ο笤O(shè)計原則


1:DRY(Don't repeat yourself)

即不要寫重復(fù)的代碼,而是用“abstraction”類來抽象公有的東西。如果你需要多次用到一個硬編碼值,那么可以設(shè)為公共常量;如果你要在兩個以上的地方使用一個代碼塊,那么可以將它設(shè)為一個獨立的方法。SOLID設(shè)計原則注意,不要濫用,duplicate 不是針對代碼,而是針對功能。這意味著,即使用公共代碼來驗證OrderID和SSN,二者也不會是相同的。使用公共代碼來實現(xiàn)兩個不同的功能,其實就是近似地把這兩個功能永遠捆綁到了一起,如果OrderID改變了其格式,SSN驗證代碼也會中斷。因此要慎用這種組合,不要隨意捆綁類似但不相關(guān)的功能。


2.封裝變化

在軟件領(lǐng)域中唯一不變的就是“Change”,因此封裝你認為或猜測未來將發(fā)生變化的代碼。OOPS設(shè)計模式的優(yōu)點在于易于測試和維護封裝的代碼。如果你使用Java編碼,可以默認私有化變量和方法,并逐步增加訪問權(quán)限,比如從private到protected和not public。有幾種Java設(shè)計模式也使用封裝,比如Factory設(shè)計模式是封裝“對象創(chuàng)建”,其靈活性使得之后引進新代碼不會對現(xiàn)有的代碼造成影響。


3.開閉原則

即對擴展開放,對修改關(guān)閉。這是另一種非常棒的設(shè)計原則,可以防止其他人更改已經(jīng)測試好的代碼。理論上,可以在不修改原有的模塊的基礎(chǔ)上,擴展功能。這也是開閉原則的宗旨。


4.單一職責原

類被修改的幾率很大,因此應(yīng)該專注于單一的功能。如果你把多個功能放在同一個類中,功能之間就形成了關(guān)聯(lián),改變其中一個功能,有可能中止另一個功能,這時就需要新一輪的測試來避免可能出現(xiàn)的問題。


5.依賴注入或倒置原則

這個設(shè)計原則的亮點在于任何被DI框架注入的類很容易用mock對象進行測試和維護,因為對象創(chuàng)建代碼集中在框架中,客戶端代碼也不混亂。有很多方式可以實現(xiàn)依賴倒置,比如像AspectJ等的AOP(Aspect Oriented programming)框架使用的字節(jié)碼技術(shù),或Spring框架使用的代理等。


6.優(yōu)先利用組合而非繼承

如果可能的話,優(yōu)先利用組合而不是繼承。一些人可能會質(zhì)疑,但我發(fā)現(xiàn),組合比繼承靈活得多。組合允許在運行期間通過設(shè)置類的屬性來改變類的行為,也可以通過使用接口來組合一個類,它提供了更高的靈活性,并可以隨時實現(xiàn)。


7.里氏代換原則(LSP)

根據(jù)該原則,子類必須能夠替換掉它們的基類,也就是說使用基類的方法或函數(shù)能夠順利地引用子類對象。LSP原則與單一職責原則和接口分離原則密切相關(guān),如果一個類比子類具備更多功能,很有可能某些功能會失效,這就違反了LSP原則。為了遵循該設(shè)計原則,派生類或子類必須增強功能。


8.接口分離原則

采用多個與特定客戶類有關(guān)的接口比采用一個通用的涵蓋多個業(yè)務(wù)方法的接口要好。設(shè)計接口很棘手,因為一旦釋放接口,你就無法在不中斷執(zhí)行的情況下改變它。在Java中,該原則的另一個優(yōu)勢在于,在任何類使用接口之前,接口不利于實現(xiàn)所有的方法,所以單一的功能意味著更少的實現(xiàn)方法。


9.針對接口編程,而不是針對實現(xiàn)編程

該原則可以使代碼更加靈活,以便可以在任何接口實現(xiàn)中使用。因此,在Java中最好使用變量接口類型、方法返回類型、方法參數(shù)類型等。《Effective Java》 和《head first design pattern》書中也有提到。


10.委托原則

該原則最典型的例子是Java中的equals() 和 hashCode() 方法。為了平等地比較兩個對象,我們用類本身而不是客戶端類來做比較。這個設(shè)計原則的好處是沒有重復(fù)的代碼,而且很容易對其進行修改。


希望這10大面向?qū)ο笤O(shè)計原則能幫助你寫出更靈活規(guī)范的代碼,編譯出更加優(yōu)秀的程序。當然,我們也不能止于理論,畢竟實踐是檢驗真理的唯一標準,需要我們在不斷的編程中學(xué)習(xí)進步!此外,我不得不向大家強烈推薦本站的Java基礎(chǔ)教程,對于渴望學(xué)習(xí)Java基礎(chǔ)的小伙伴來說無疑是雪中送炭,助你早日學(xué)有所成,成為一名Java大神!


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日韩中文在线视频 | 欧美成人免费全网站大片 | 高清一区二区亚洲欧美日韩 | 亚洲欧洲视频 | 91手机在线视频 | 免费h片在线观看网址最新 免费v片在线观看无遮挡 | 国产福利在线观看视频 | 成年女人免费视频播放77777 | 狠狠操夜夜操 | 日本不卡视频在线 | 亚洲国产成人精品女人久久久 | 看全色黄大色大片免费久黄久 | 国精品在亚洲_欧美 | 欧美成人免费全网站大片 | 91精品国产福利在线观看性色 | 99久久免费费视频在线观看 | 2021国产精品久久 | 九九伦理 | 日本一区视频在线 | 国产一级特黄高清在线大片 | 午夜狠狠操 | 老司机永久免费视频 | 四虎 2022 永久网站 | 亚洲国产成a人v在线观看 | a级片免费在线播放 | 一级一片免费播放 | 成人午夜影视全部免费看 | 色噜噜狠狠一区二区三区 | 国产欧美一区二区三区免费 | 49xxx中国妇女内谢视频 | 91精品久久一区二区三区 | 亚洲欧洲久久久精品 | 色综合欧美色综合七久久 | 久久综合久久综合久久综合 | 久久天天躁狠狠躁夜夜爽蜜月 | 狠狠色噜噜狠狠狠97影音先锋 | 欧美 日| 在线免费一区二区 | 久久婷婷国产一区二区三区 | 4hu影院永久在线播放 | 99视频免费 |