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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美乱xxxxx强 | 成人在线精品视频 | 国产精品亚洲欧美日韩久久 | 亚洲另类视频在线观看 | 毛片免费观看日本中文 | 国产69精品久久久久999小说 | 四虎影院在线 | 全黄大全大色全免费大片 | 久久精品一区二区三区日韩 | 免费福利视频网 | 永久免费精品影视网站 | 国产精品福利在线观看 | 中文字幕在线免费观看视频 | 免费a级特黄国产大片 | 99久久国产免费中文无字幕 | 欧美白人猛性xxxxx交69 | 最新中文字幕一区 | 91久久亚洲最新一本 | 天天综合射 | 亚洲激情视频网站 | 网络色综合久久 | 精品成人在线观看 | 深夜影院老司机69影院 | 久久久久久久久一级毛片 | 最新中文字幕在线播放 | 久久免 | 欧美日韩精品国产一区二区 | 国产不卡精品一区二区三区 | 99久久精品国产片久人 | 国产亚洲精品久久久久久久软件 | 国产网站免费视频 | 欧美精欧美乱码一二三四区 | 一类毛片 | 97视频久久 | 日本又黄又爽又色的免费视频 | 日韩国产成人精品视频 | 亚洲欧美强伦一区二区另类 | 日本一区二区三区欧美在线观看 | 国产va免费高清在线观看 | 97影院官网| 久久最新免费视频 |