里氏替换原则 Liskov Substitution Principle
含义
子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。
Functions that use pointers of references to base classes must be able to use objects of derived classes without knowing it.
public class Transporter {
private HttpClient httpClient;
public Transporter(HttpClient httpClient) {
this.httpClient = httpClient;
}
public Response sendRequst(Request request) {
// ...use httpClient to send request
}
}
public class SecurityTransporter extends Transporter {
private String appId;
private String appToken;
public SecurityTransporter(HttpClient httpClient, String appId, String appToken) {
super(httpClient);
this.appId = appId;
this.appToken = appToken;
}
@Override
public Response sendRequest(Request request) {
if(StringUtils.isNotBlank(appId) && StringUtils.isNotBlank
}
}
里氏替换原则用来指导继承关系中的子类该如何设计,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑以及不破坏原有程序的正确性。
明显违背里氏替换原则:
- 子类违背父类声明要实现的功能;
- 子类违背对输入,输出,异常的约定;
- 子类违背父类注释中所罗列的任何特殊说明。
判断子类的设计实现是否违背里氏替换原则的小窍门:
拿父类的单元测试去测试子类的代码。如果某些单元测试失败了,就有可能说明,子类的设计实现没有完全地遵守父类地约定。

浙公网安备 33010602011771号