更新時間:2020-10-15 17:18:30 來源:動力節點 瀏覽1186次
面向對象程序設計是當今主流的程序設計范型,已經取代了早期的“結構化”過程化程序設計開發技術,java是完全面向對象的計算機語言,要使用面向對象式來設計java程序。在前面我們學習了面向對象程序設計的整個思想與概述,另外還需要知道面向對象設計原則是什么,這樣才能用java語言寫出程序。
面向對象設計原則一共有七個,包括:開閉原則、里氏替換原則、依賴倒轉原則、單一職責原則、接口隔離原則、組合/聚合復用原則、迪米特法則。下面分別來介紹這七大面向對象設計原則:
1、開閉原則
面向對象可復用設計原則中最基礎的原則便是開閉原則,開閉原則指的是在設計一個對象(類、模塊、函數)時,應遵循或做到對擴展開放、對修改關閉,其核心思想是面向接口/抽象進行編程。系統的抽象化設計,是開放關閉原則的關鍵。可以通過接口、抽象類定義系統的抽象層,通過實現類進行擴展,增加新功能只需增加新的實現類,而無需修改抽象層,從而實現在不修改已有代碼的情況下實現系統擴展。
2、里氏替換原則
里氏替換原則要求設計一個對象時,代碼中任何父類對象可以出現的地方,子類都可以出現,即可以使用子類來代替父類。實現開閉原則的核心思想是面向接口/抽象進行編程,其關鍵步驟是抽象化,而父類和子類的繼承關系就是抽象化的具體體現,所以里氏替換原則是對實現抽象化的具體步驟的規范,它是對開閉原則的補充。
3、依賴倒轉原則
依賴倒轉原則指程序中要依賴抽象(接口/抽象類)而不是具體的實現(實現類)進行編程,即面向接口/抽象進行編程,這樣可以最大程度降低模塊之間的耦合。比如訂單服務中,會調用(依賴)支付服務以完成訂單的支付。此時的訂單服務實現類代碼中,聲明或持有的應該是一個支付服務PayService接口,而不是具體實現類比如Alipay或WeChatPay,所有需要用到支付服務的地方,調用的都是PayService接口變量,即代碼中都是接口,等到在運行時才實例化或注入具體的實現類,編寫代碼時不需要關心具體實現類,也就是面向接口/抽象編程。這樣,在應用程序擴展或集成新的支付服務時,原來的訂單服務代碼可以不需要進行修改任何代碼,這樣也就符合了開閉原則。
4、單一職責原則
一個類只負責一個功能領域中的相應職責。就一個類而言,應該只有一個引起它變化的原因。不同的類具備不同的職責,各司其職,有以下優點:(1)可以降低類的復雜度,一個類只負責一項職責,其邏輯肯定要比負責多項職責簡單的多;(2)類的可讀性高,進而可以提高系統的可維護性;(3)變更引起的風險降低,變更是必然的,如果單一職責原則遵守的好,當修改一個功能時,可以顯著降低對其他功能的影響。單一職責原則是最簡單但又最難運用的原則,難點在于職責和粒度劃分。一個類往往具有多重職責,而發現類的多重職、職責粒度拆分的大小需要要設計人員具有較強的分析設計能力和相關實踐經驗。
5、接口隔離原則
接口隔離原則指設計時不同的功能應定義在不同的接口上,避免實現類依賴不需要的接口,換個角度理解就是一個類應該依賴盡量少的接口或實現類,減少程序的冗余性和復雜性。在使用接口隔離原則時,我們需要注意控制接口的粒度,接口不能太小,如果太小會導致系統中接口泛濫,不利于維護;接口也不能太大,太大的接口將違背接口隔離原則,靈活性較差,使用起來很不方便。一般而言,接口中僅包含為某一類用戶定制的方法即可,不應該強迫客戶依賴于那些它們不用的方法。
6、組合/聚合復用原則
組合/聚合復用原則也叫做合成復用原則,它指在一個新的對象中引入/注入現有的對象以達到功能復用和擴展的目的。簡單講就是盡量使用組合/聚合而不要使用繼承。
7、迪米特法則
迪米特法則指設計一個對象時,盡可能少的與其它對象發生相互作用,即盡可能少的了解或依賴其它對象,降低耦合度。廣義的迪米特法則,在類設計的具體操作上,主要通過以下三點來體現:(1)優先考慮將一個類設置為final不變類;(2)盡量降低一個類及其成員變量的訪問權限;(3)謹慎使用序列化.
希望上面對面向對象設計原則的介紹可以幫助到大家,尤其是希望java零基礎的朋友們對面向對象更深入的理解。熟練掌握七大面向對象設計原則是初級java程序員向中高級程序員進階的基礎,應用好面向對象設計原則可以提升程序的可復用性和可維護性,也是重構代碼的一大利器。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習