开闭原则
定义
- 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
强调
优点
理解
- 在实现业务逻辑时候,尽量不要删除或者修改已有的函数,而是去新建函数或者类(继承)以实现新的需求。当然,这对原架构的设计有一定的要求,必要时可以对原架构进行重构。
举例
![举例图](https://i-blog.csdnimg.cn/blog_migrate/28438d41c95a3eb9402fabfb66b98447.png)
public interface ICourse {
Integer getId();
String getName();
Double getPrice();
}
public class JavaCourse implements ICourse{
private Integer Id;
private String name;
private Double price;
public JavaCourse(Integer id, String name, Double price) {
this.Id = id;
this.name = name;
this.price = price;
}
public Integer getId() {
return this.Id;
}
public String getName() {
return this.name;
}
public Double getPrice() {
return this.price;
}
}
public class JavaDiscountCourse extends JavaCourse {
public JavaDiscountCourse(Integer id, String name, Double price) {
super(id, name, price);
}
public Double getDiscountPrice(){
return super.getPrice()*0.8;
}
}
public class Test {
public static void main(String[] args) {
ICourse iCourse = new JavaDiscountCourse(96, "Java课程", 366d);
JavaDiscountCourse javaCourse = (JavaDiscountCourse) iCourse;
System.out.println("课程ID:" + javaCourse.getId() + " 课程名称:" + javaCourse.getName() + " 课程原价:" + javaCourse.getPrice() + " 课程折后价格:" + javaCourse.getDiscountPrice() + "元");
}
}