日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

【设计模式】里氏替换原则

發布時間:2025/3/20 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】里氏替换原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

里氏替換原則

OO(Object Oriented,面向對象程式設計)中的繼承性的思考和說明

  • 繼承包含這樣一層含義∶父類中凡是已經實現好的方法,實際上是在設定規范和契約,雖然它不強制要求所有?的子類必須遵循這些契約,但是如果子類對這些已經實現的方法任意修改,就會對整個繼承體系造成破壞。
  • 繼承在給程序設計帶來便利的同時,也帶來了弊端。比如使用繼承會給程序帶來 侵入性,程序的可移植性降低,?增加對象間的耦合性,如果一個類被其他的類所繼承,則當這個類需要修改時,必須考慮到所有的子類,并且父類修改后,所有涉及到子類的功能都有可能產生故障
  • 問題提出∶在編程中,如何正確的使用繼承?=> 里氏替換原則
  • 里氏替換原則

  • 如果對【類A】的【對象O1】,都有【類B】的【對象O2】,使得以【類A】定義的所有程序P在所有的【對象O1】都?代換成【對象O2】時,程序P的行為沒有發生變化,那么【類B】是【類A】的子類型。換句話說,所有引用基類的地方必須能透明地使用其子類的對象。
  • 在使用繼承時,遵循里氏替換原則,在子類中盡量不要重寫父類的方法
  • 里氏替換原則告訴我們,繼承實際上讓兩個類耦合性增強了,在適當的情況下,可以通過聚合,組合,依賴 來?解決問題。
  • 違反里氏替換原則

    class IPhone{public void sendEmail() {System.out.println("QQ發郵件");} }class XiaoMi extends IPhone{// 不小心重寫了父類中的方法public void sendEmail() {System.out.println("136發郵件");}public void call() {System.out.println("打電話");} } public class LiskovSubstitutionPrinciple {public static void main(String[] args) {IPhone iPhone = new IPhone();iPhone.sendEmail();XiaoMi xiaoMi = new XiaoMi();xiaoMi.sendEmail(); //目的是使用QQ發郵件,實際是136發郵件xiaoMi.call();} }

    修改后符合里氏替換原則

    通用的做法是∶原來的父類和子類都繼承一個更通俗的基類,原有的繼承關系去掉,采用依賴,聚合,組合等關系代替

    class MyPhone{// 基類 }class IPhone extends MyPhone{public void sendEmail() {System.out.println("QQ發郵件");} }class XiaoMi extends MyPhone{public void sendEmail() {System.out.println("136發郵件");}public void call() {System.out.println("打電話");} } public class LiskovSubstitutionPrinciple {public static void main(String[] args) {IPhone iPhone = new IPhone();iPhone.sendEmail();XiaoMi xiaoMi = new XiaoMi();xiaoMi.sendEmail();xiaoMi.call();} }

    總結

    以上是生活随笔為你收集整理的【设计模式】里氏替换原则的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。