大战熟女丰满人妻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 課程進行任何更改。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 成人深夜网站 | 四虎1515| 国产精品96久久久久久久 | 久草精品视频在线观看 | 麻豆精品久久精品色综合 | 就色干综合 | 国外成人免费高清激情视频 | 欧美另类精品 | 亚洲在线h | 91成人国产网站在线观看 | 精品国产国产综合精品 | 97人人艹| 老头与老头同性tube可播放 | 亚洲色五月 | 性欧美暴力猛交xxxxx高清 | 日韩一区二区三区不卡 | 日韩亚射吧| 成年人的毛片 | 香蕉在线视频观看 | 久久久久久9 | 色 综合 欧美 亚洲 国产 | 欧美成人一区二区三区在线视频 | 国产午夜视频在线观看第四页 | 97激情 | 久久综合亚洲 | 四虎国产永久免费久久 | 久久久综合色 | 成人伊人网 | 欧美日韩在线成人免费 | 操一操日一日 | 日韩黄色网页 | 亚洲精品一区国产二区 | 成人影院wwwwwwwwwww | 亚欧中文字幕 | 91久久综合九色综合欧美98 | 999精品久久久中文字幕蜜桃 | 中文字幕在线观看一区 | 天天干干 | 深夜福利免费 | 俄欧美做爰xxxⅹ在线视频 | 久久亚洲这里只有精品18 |