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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 面向對象設計的原則概述

面向對象設計的原則概述

更新時間:2022-04-11 10:41:45 來源:動力節點 瀏覽894次

面向對象設計的原則是什么?動力節點小編來告訴你。

單一職責原則 (SRP)

SRP 要求一個類應該只有一個職責。

示例:如果一個類SalesOrder 保存有關銷售訂單的信息,并且另外有一個saveOrder()將其保存SaleOrder 在數據庫中的方法和一個exportXML() 導出的方法,那么SalesOrder這種設計將違反 SRP,因為會有不同類型的用戶類以及對此類進行更改的不同原因。對一種類型的用戶進行的更改,比如更改數據庫的類型,可能需要為其他類型的用戶重新測試、重新編譯和重新鏈接該類。

更好的設計是讓SalesOrder 類只保存有關銷售訂單的信息,并有不同的類分別保存訂單和導出訂單。這樣的設計將得到 SRP 的證實。

開閉原則 (OCP)

OCP 要求每個軟件實體應該對擴展開放,對修改關閉。

示例: 假設一個OrderValidation 類有一個方法validate(Order order)被編程為根據一組硬編碼規則驗證訂單。這種設計違反了 OCP,因為如果規則發生變化,則OrderValidation必須修改、測試和編譯類。

更好的設計是讓OrderValidation 類包含一個對象集合,ValidationRule 每個對象都有一個validate(Order order)方法(可能在Validation 接口中定義)來驗證Order使用特定規則的方法,并且類的validate(Order order)方法OrderValidation 可以簡單地遍歷這些ValidationRule對象以驗證順序. 新設計將滿足 OCP,因為如果規則發生變化,我們可以創建一個新ValidationRule 對象并在運行時將其添加到OrderValidation實例中(而不是添加到類定義本身)。

這也可以通過使用AbstractValidationRule具有可覆蓋功能的基類的子類來實現validate(Order order)。子類可以在不改變基類功能的情況下以不同的方式實現該方法。

里氏替換原則 (LSP)

LSP 要求程序中的對象應該可以用它們的子類的實例替換而不改變該程序的正確性。

用戶必須能夠通過對基類的引用來使用子類的對象,而不會注意到任何區別。當通過其基類接口使用對象時,子類的對象不能期望用戶遵守比基類要求的更強大的先決條件。

示例:假設一個Rectangle 類有兩個實例變量height和width,以及一個方法,setSize(int a, int b)該方法設置height 為a和width。b假設Square是 的子類, 和為 來Rectangle 覆蓋繼承的方法。這種設計會違反 LSP。要看到這一點,請考慮客戶端使用類型的引用變量調用 方法來分配不同的值和,然后立即驗證是否正確設置了大小或正確計算了面積。如果變量引用heightwidthaRectanglesetSize()abRectangle對象而不是 Square對象。

事實證明,在 OO 編程中, aSquare 根本不是 a Rectangle,因為它的行為與 a 不同Rectangle。

接口隔離原則 (ISP)

ISP 要求客戶端不應被迫依賴他們不使用的接口。

示例:假設圖中所示的 Vehicle 接口是為客戶設計的

這違反了 ISP,因為客戶端被迫依賴于他們不使用的方法:HighWay不使用stopRadio() or ejectCD(),并且ParkingLot不需要accelerate()or ejectCD()。

更好的設計是為不同類型的客戶端設計更小的接口,如下圖所示

依賴倒置原則(DIP)

DIP 要求高層模塊不應該依賴于低層模塊,兩者都應該依賴于Java抽象類。另外,抽象不應該依賴于細節,細節應該依賴于抽象。

示例:使一個類Button 與另一個 Lamp(因為 aLamp 有 aButton)違反了 DIP。更好的設計是將 AbstractButton 與 AbstractButtonClient 相關聯,并將 Button 定義為 AbstractButton 的子類,將 Lamp 定義為 AbstractButtonClient 的子類。

示例:EBookReader 使用classPDFBook是違反DIP的,因為它需要更改EBookReader class才能閱讀其他類型的電子書。一個更好的設計是讓EBookReader 使用一個接口EBook并讓PDFBook 其他類型的電子書類實現EBook。現在添加或更改電子書課程將不需要對EBookReader 課程進行任何更改。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久久四虎成人永久免费网站 | 妖精视频在线观看网站 | 四虎永久| 国产亚洲情侣久久精品 | 欧美午夜精品久久久久免费视 | 日韩精品一区二区三区免费视频 | 看免费的毛片 | 日韩不卡 | 四虎新网址 | 在线中文字幕观看 | 日韩欧美国产亚洲 | 久久精品亚洲欧美va | 国产成年视频 | 久久精品网站免费观看调教 | 国产好大好爽久久久久久久 | 久久免视频 | 一级片免费在线 | 亚洲精品www久久久久久久软件 | 天海翼一区二区三区免费 | 兽王高清完整在线观看 | 涩涩视频免费观看 | 日本一区二区三区四区 | 国产精品久久久久久久久久久搜索 | 伊人一伊人色综合网 | 色拍自拍亚洲综合在线 | 国产女人视频 | 久草观看视频 | 婷婷综合国产激情在线 | 精品牛牛影视久久精品 | 亚洲精品日本高清中文字幕 | 91xav在线| 奇米视频第四色 | 久久综合免费 | 成人a在线观看 | 欧美国产日韩久久久 | 久久香蕉国产线看观看精品yw | 青青青青久久精品国产一百度 | 日韩男人天堂 | 亚洲一区亚洲二区 | 51国产午夜精品免费视频 | 综合亚洲一区二区三区 |