SOLID - 里氏替换原则
1. Intro
里氏替代原则 - Liskov Substitution Principle
讲述的是子类对象需要能够替换程序当中父类对象出现的任何地方,并且保证原来程序的逻辑性为不变以及正确性不被破坏。
public class Transporter {
private HttpClient httpClient;
public Transporter(HttpClient httpClient) {
this.httpClient = httpClient;
}
public Response sendRequest(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(appToken)) {
request.addPayload("app-id", appId);
request.addPayload("app-token", appToken);
}
return super.sendRequest(request);
}
}
public class Demo {
public void demoFunction(Transporter transporter) {
Reuqest request = new Request();
//...省略设置request中数据值的代码...
Response response = transporter.sendRequest(request);
//...省略其他逻辑...
}
}
// 里式替换原则
Demo demo = new Demo();
demo.demofunction(new SecurityTransporter(/*省略参数*/););
2. 里氏替代原则 – 按照协议进行设计
子类在设计的时候,应当遵守父类的行为约定。父类定义了函数的行为约定,那么子类可以改变函数的内部实现逻辑,但不能改变函数原有的行为约定。
这里的行为约定指的是函数声明的要实现的功能;对于输入输出以及异常的约定
定义当中父类和子类之间的关系,也是可以替换成接口和实现类之间的关系的。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 stone2paul@gmail.com
文章标题:SOLID - 里氏替换原则
文章字数:344
本文作者:Leilei Chen
发布时间:2020-03-14, 12:33:36
最后更新:2020-03-14, 12:34:42
原始链接:https://www.llchen60.com/SOLID-%E9%87%8C%E6%B0%8F%E6%9B%BF%E6%8D%A2%E5%8E%9F%E5%88%99/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。