欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

liskov替换原则_坚实原则:Liskov替代原则

发布时间:2023/12/3 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 liskov替换原则_坚实原则:Liskov替代原则 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

liskov替换原则

以前,我们深入研究了坚实的原则,包括单一责任和开放/封闭原则。
Liskov替代原则(LSP)是子类型关系的一种特殊定义,称为(强)行为子类型,

假设对象S是对象T的子类型,则可以用类型S的对象替换类型T的对象,而无需更改T的任何理想属性。

假设我们有Employee类。

package com.gkatzioura.solid.liskov;public class Employee {public void work() {System.out.println("Employee is working");}}

另外,我们还有另一个继承Employee类的类。

package com.gkatzioura.solid.liskov;public class EmployeeOnVacation extends Employee {@Overridepublic void work() {throw new IllegalArgumentException("Employees on vacation should not work");} }

假设我们有一个项目。

package com.gkatzioura.solid.liskov;import java.util.List;public class Project {public void start(List<Employee> employees) {for(Employee employee:employees) {employee.work();}} }

我们指派员工开始研究

List<Employee> employees = new ArrayList<>();employees.add(new EmployeeOnVacation());employees.add(new Employee());Project project = new Project();project.start(employees);

由于员工正在休假,结果将是一个例外,因此该项目将无法完成。
为了避免违反该原则,我们将使用不同的方法并建立两个不同的员工界面。
WorkingEmployee接口。

package com.gkatzioura.solid.liskov;public interface WorkingEmployee {public void work(); }

和非工作人员界面。

package com.gkatzioura.solid.liskov;public interface NonWorkingEmployee {void relax(); }

因此,该项目将仅使用作为WorkingEmployee接口的实现的员工。

List<WorkingEmployee> employees = new ArrayList<>();employees.add(new WorkingEmployeeImpl());Project project = new Project();project.start(employees);

您可以在github上找到源代码。 下一个原则是接口隔离原则。

另外,我还编写了备忘单,其中包含有关扎实原则的摘要。
在链接中注册以接收它。

翻译自: https://www.javacodegeeks.com/2018/02/solid-principles-liskov-substitution-principle.html

liskov替换原则

总结

以上是生活随笔为你收集整理的liskov替换原则_坚实原则:Liskov替代原则的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。