• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面向對象設計原則

    面向對象設計原則

     

     

    熟練掌握和應用面向對象設計(Object Oriented Design,OOD)7大原則,是初/中級JAVA工程師向高級/資深工程師進階的一個必備技能,它可以大大提升程序的可復用性和可維護性,也是重構代碼的一大利器。7大設計原則包括開閉原則、里氏替換原則、依賴倒轉原則、單一職責原則、接口隔離原則、組合/聚合復用原則、迪米特法則。

     

     

    1. 開閉原則


    面向對象可復用設計原則中最基礎的原則便是開閉原則(Open-Closed Principle,OCP)。開閉原則指的是在設計一個對象(類、模塊、函數)時,應遵循或做到對擴展開放、對修改關閉,其核心思想是面向接口/抽象進行編程。比如第四方支付平臺,集成微信支付服務時,遵循開閉原則的話,正常的做法就是先抽象設計一個支付接口,然后微信支付類實現該支付接口。以后平臺集成更多如支付寶、華為、蘋果等支付服務時,只需要擴展一個對應支付方式的支付類即可,這樣既擴展了新的支付服務,同時避免了修改現有的支付接口以及微信支付類,最大限度保證了新代碼不會影響現有的業務代碼。這就是對擴展(新對象)開放,對修改(現有對象)關閉。

     

     

    2. 里氏替換原則


    里氏替換原則(Liskov Substitution Principle,LSP)要求設計一個對象時,代碼中任何父類對象可以出現的地方,子類都可以出現,即可以使用子類來代替父類。實現開閉原則的核心思想是面向接口/抽象進行編程,其關鍵步驟是抽象化,而父類和子類的繼承關系就是抽象化的具體體現,所以里氏替換原則是對實現抽象化的具體步驟的規范,它是對開閉原則的補充。比如教學平臺中新增加了學生用戶Student,和教師用戶Teacher一樣進入個人中心,都需要登錄,在設計或重構用戶登錄服務類時,抽象的用戶User類作為教師Teacher和學生Student的父類,此時需要遵循出現用戶User的地方,都可以使用新擴展的學生Student代替,當然也必須也可以使用教師Teacher代替,這樣設計出來的User類,對用戶登錄服務類來說,后續擴展更多的用戶User的子類比如家長、輔導員時,可以保證符合開閉原則。

     

     

    3.依賴倒轉原則


    依賴倒轉原則(Dependency Inversion Principle,DIP)指程序中要依賴抽象(接口/抽象類)而不是具體的實現(實現類)進行編程,即面向接口/抽象進行編程,這樣可以最大程度降低模塊之間的耦合。比如訂單服務中,會調用(依賴)支付服務以完成訂單的支付。此時的訂單服務實現類代碼中,聲明或持有的應該是一個支付服務PayService接口,而不是具體實現類比如Alipay或WeChatPay,所有需要用到支付服務的地方,調用的都是PayService接口變量,即代碼中都是接口,等到在運行時才實例化或注入具體的實現類,編寫代碼時不需要關心具體實現類,也就是面向接口/抽象編程。這樣,在應用程序擴展或集成新的支付服務時,原來的訂單服務代碼可以不需要進行修改任何代碼,這樣也就符合了開閉原則。

     

     

    4.單一職責原則


    單一職責原則(Single Function Principle,SFP)又稱單一功能原則,它規范設計一個類應只實現單一或獨立的職責即業務功能。職責分明的設計,可以提高程序的可維護性。如果多個獨立的業務功能設計在同一類中,當一個或多個業務功能擴展或變動需要修改代碼時,可能會帶來沖突問題,降低可維護性。比如訂單服務中,又包含了用戶服務,重構用戶服務的代碼時,相當于重構訂單服務的代碼,這是不合理的,容易造成混淆。

     

     

    5.接口隔離原則


    接口隔離原則(Inteface Segregation Principle,ISP)指設計時不同的功能應定義在不同的接口上,避免實現類依賴不需要的接口,換個角度理解就是一個類應該依賴盡量少的接口或實現類,減少程序的冗余性和復雜性。

     

     

    6.組合/聚合復用原則


    組合/聚合復用原則(Composition/Aggregation Principle,CARP)也叫做合成復用原則(Composition Reuse Principle,CRP),它指在一個新的對象中引入/注入現有的對象以達到功能復用和擴展的目的。簡單講就是盡量使用組合/聚合而不要使用繼承。

     

     

    7.迪米特法則


    迪米特法則(Low of Demeter,LoD)指設計一個對象時,盡可能少的與其它對象發生相互作用,即盡可能少的了解或依賴其它對象,降低耦合度。廣義的迪米特法則,在類設計的具體操作上,主要通過以下三點來體現:

     

    • 優先考慮將一個類設置為final不變類


    • 盡量降低一個類及其成員變量的訪問權限


    • 謹慎使用序列化

     

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏