网页编辑岗位职责,云南网站优化公司,网络组网方案,wordpress上传文章以前#xff0c;我们深入研究了坚实的原则#xff0c;包括单一责任和开放/封闭原则。 Liskov替代原则#xff08;LSP#xff09;是子类型关系的一种特殊定义#xff0c;称为#xff08;强#xff09;行为子类型#xff0c; 假设对象S是对象T的子类型#xff0c;则可… 以前我们深入研究了坚实的原则包括单一责任和开放/封闭原则。 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(ListEmployee employees) {for(Employee employee:employees) {employee.work();}}
} 我们指派员工开始研究 ListEmployee 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接口的实现的员工。 ListWorkingEmployee 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