軟體設計七大原則 (六)黎克特制替換原則

2021-10-06 22:04:42 字數 2113 閱讀 1864

public

class

rectangle

public

void

setlength

(long length)

public

long

getwidth()

public

void

setwidth

(long width)

}

public

class

square

extends

rectangle

public

void

setsidelength

(long sidelength)

@override

public

long

getlength()

@override

public

void

setlength

(long length)

@override

public

long

getwidth()

@override

public

void

setwidth

(long width)

}

public

class

liskovsubstitutiontest

system.out.

println

("resize 方法結束 width:"

+rectangle.

getwidth()

);}public

static

void

main

(string[

] args)

}

/*

* 此時**違背裡式替換原則,會導致**無限執行,直到oom。

*/

package com.evan.design.liskovsubstitution;

/** * @author evan wang

* @date 2020/6/8 19:43

*/public

inte***ce

quadrangle

public

class

rectangle

implements

quadrangle

@override

public

long

getlength()

public

void

setlength

(long length)

public

class

square

implements

quadrangle

@override

public

long

getlength()

public

void

setsidelength

(long sidelength)

}

public

class

liskovsubstitutiontest

system.out.

println

("resize 方法結束 width:"

+rectangle.

getwidth()

);}public

static

void

main

(string[

] args)

}

/**

* 當子類過載父類方法時,子類的入參範圍要大於等於父類(子類:map,父類:hashmap),

* * 當子類實現父類方法時,子類的返回值範圍要小於等於父類(子類:hashmap,父類:map),

*/

軟體設計七大原則 06 黎克特制替換原則

類圖 public class base public class child extends base public void method map map public class test 輸出 父類被執行 示例類圖 不符合黎克特制替換原則對方法入參的要求.png 示例 public clas...

設計模式七大原則 4 黎克特制替換原則

三 注意事項和細節 參考我們平時說的繼承,它有另一層含義 黎克特制替換原則定義 我們使用乙個加減法的例子來說明 建立a類,使其實現減法功能 classa public class client 執行結果為 100 50 50 現在新增乙個新功能,使兩數相加後再與100相加,且這個功能由b類實現,所以...

細說設計模式七大原則(4) 黎克特制替換原則

英文名 the liskov substitution principle,liskov 黎克特制替換原則通俗的來講就是 子類可以擴充套件父類的功能,但不能改變父類原有的功能。它包含以下4層含義 問題由來 有一功能p1,由類a完成。現需要將功能p1進行擴充套件,擴充套件後的功能為p,其中p由原有功能...