[面向物件六大原則] 里氏替換原則(LSP)
里氏替換原則 - Liskov Substitution Principle
定義一:如果對每一個型別為S的物件O1,都有型別為T的物件O2,使得以T定義的所有程式P在所有的物件O1都替換成O2時,程式P的行為沒有發生變化,那麼型別S是型別T的子型別。
定義二:所有引用基類的地方必須能透明地使用其子類的物件。
通俗來講:只要父類能出現的地方子類就可以出現,而且替換為子類也不會出現錯誤和異常,使用者根本不需要知道是父類還是子類。但是反過來就不可以,有子類出現的地方,父類未必就能適應。
里氏替換原則依賴於面向物件設計語言三大特性中的“繼承”和“多型”。
里氏替換原則的核心原理是抽象。抽象是依賴於繼承這個特性。
繼承的優點:
①程式碼重用,減少建立類的成本,每個子類都擁有父類的方法和屬性;
②子類與父類基本相似,但又與父類有所區別;
③提高程式碼的可擴充套件性。
繼承的缺點:
①繼承是侵入性的,只要繼承就必須擁有父類的方法和屬性;
②可能造成子類程式碼冗餘、靈活性降低,因為子類必須擁有父類的方法和屬性。
相關推薦
[面向物件六大原則] 里氏替換原則(LSP)
里氏替換原則 - Liskov Substitution Principle定義一:如果對每一個型別為S的物件O1,都有型別為T的物件O2,使得以T定義的所有程式P在所有的物件O1都替換成O2時,程式P的行為沒有發生變化,那麼型別S是型別T的子型別。定義二:所有引用基類的地方
面向物件六大原則----里氏替換原則,依賴倒置原則
單一職責原則 英文名稱是Single Responsibility Principle,簡稱SRP 開閉原則英文全稱是Open Close Principle,簡稱OCP 里氏替換原則 英文全稱是Liskov Substitution Principle,簡稱LSP 依賴倒置原則 英文全稱是Depe
面向物件設計原則--里氏替換原則(LSP)和依賴倒置原則(DIP)
面向物件設計原則–里氏替換原則(LSP)和依賴倒置原則(DIP) tags:設計模式 LSP–inheritance should ensure that any property prove
設計模式六大原則:里氏替換原則(五)
里氏代換原則是由麻省理工學院(MIT)電腦科學實驗室的Liskov女士,在1987年的OOPSLA大會上發表的一篇文章《Data Abstraction and Hierarchy》裡面提出來的,主要闡述了有關繼承的一些原則,也就是什麼時候應該使用繼承,什麼
設計原則---里氏替換原則
本文參考自設計模式之禪(第二版)第二章 1.1 愛恨糾葛的父子關係 在面向物件的語言中,繼承是必不可少的、非常優秀的語言機制,它有如下優點: 程式碼共享,減少建立類的工作量,每個子類都擁有父類的方法和屬性; 提高程式碼的重用性; 子類可以形似父
設計模式原則——里氏替換原則
里氏替換原則(Liskov Substitution Principle) 定義1:如果對每一個型別為 T1 的物件 o1,都有型別為 T2 的物件 o2,使得以 T1 定義的所有程式 P 在所有的物件 o1 都代換成 o2 時,程式 P 的行為沒有發生變化,那麼型別 T2
java設計原則--里氏替換原則
JAVA設計原則–里氏替換原則(LSP原則) 為什麼要用里氏替換原則?: 為了優化繼承所帶來的缺點,使得繼承的優點發揮到最大,而同時減少缺點帶來的麻煩。 繼承的優缺點: 優點: 1. 程式碼共享,減少建立類的工作量,每個子類都擁有父類的屬性和方
設計模式之設計原則-里氏替換原則
父類和子類 面嚮物件語言中的繼承,有以下優點: 程式碼共享,減少建立子類的工作量,只要繼承了父類就擁有父類的方法和屬性 提高程式碼重用性 子類可以完全繼承父類的方法,又可以對父類的方法進行重寫,既可以和父類保持一致,也可以有自身的特點 提高程式碼的擴充套件
第2章 面向物件的設計原則(SOLID):2_里氏替換原則(LSP)
2. 里氏替換原則(Liskov Substitution Principle,LSP) 2.1 定義 (1)所有使用基類的地方必須能透明地使用子類替換,而程式的行為沒有任何變化(不會產生執行結果錯誤或異常)。只有這樣,父類才能被真正複用,而且子類也能夠在父類的基礎上增加新的行為。也只有這樣
面向物件原則之里氏替換原則
轉載請註明出處:http://blog.csdn.net/feibendexiaoma/article/details/74391028 一.簡稱 英文全稱是Liskov Substitution Principle, 縮寫是LSP 二.定義 如果對每一個型別為S的物件O1,都
面向物件的五大設計原則之里氏替換原則
里氏替換原則(liskov substitution principle,簡稱LSP)的核心只有一句話,subtypes must be substitutable for their base types(子類必須能夠替換成它們的基類),關於它的定義和主要的思想如下: 由於面向物件程式設計
面向物件原則之一 里氏替換原則
原文: 面向物件原則之一 里氏替換原則 前言 面向物件有人分為五大原則,分別為單一職責原則、開放封閉原則、依賴倒置原則、介面隔離原則、里氏替換原則。 也有人分為六大原則,分別為單一職責原則、開放封閉原則、依賴倒置原則、介面隔離原則、里氏替換原則、迪米特法則。 現在我們來介紹里氏替換原則
面向物件六大原則之單一
單一職責原則-SRP(Single Responsibility Principle) 通俗的說,即一個類只負責一項職責 如:類T負責兩個不同的職責:職責P1,職責P2。當由於職責P1需求發生改變而需要修改類T時有可能會導致原本執行正常的職責P2功能發生故障。 如:對資料庫的增刪查改,對資料
java面向物件六大原則
面向物件特點: 1:將複雜的事情簡單化。 2:面向物件將以前的過程中的執行者,變成了指揮者。 &
OO設計原則 -- Liskov Substitution Principle: 里氏替換原則(LSP)
概要 Functions that use pointers or references to base classesmust be able to use objects of derived classes without knowing it. 所有引
LSP里氏替換原則----正方形不是長方形和鴕鳥不是鳥的測試程式
//面向物件設計原則:LSP里氏替換原則 //正方形不是長方形的測試程式 #include <iostream> using namespace std; //長方形類Rectangle class Rectangle { private: int wi
(轉)設計模式六大原則(2):里氏替換原則
肯定有不少人跟我剛看到這項原則的時候一樣,對這個原則的名字充滿疑惑。其實原因就是這項原則最早是在1988年,由麻省理工學院的一位姓裡的女士(Barbara Liskov)提出來的。 定義1:如果對每一個型別為 T1的物件 o1,都有型別為 T2 的物件o2,使
Android 面向物件六大設計原則之單一職責原則
1.單一職責原則簡介單一職責原則(SRP:Single responsibility principle)又稱單一功能原則,面向物件六個基本原則(SOLID)之一。它規定一個類應該只有一個發生變化的原因
面向物件的原則之替換原則
替換原則 替換原則由MIT電腦科學實驗室的Liskov女士在1987年的OOPSLA大會上的一篇文章《Data Abstraction and Hierarchy》中提出,主要闡述有關繼承的一些原則,故又稱里氏替換原則。 2002年,Robert C
面向物件六大原則——單一職責原則
什麼是單一職責原則(Single Responsibility Principle, SRP) 在講解什麼是單一職責原則之前,我們先說一個例子,吊一下口味:我們在做專案的時候,會接觸到使用者,機構,角色管理這些模組,基本上使用的都是RBAC模型(Role-Ba