开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。
在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的 效果,我们需要使用接口和抽象类。面向抽象编程, 不是面向实现编程, 抽象是文档的
以一个课程设计体系来举例
public interface ICourse {
Integer getId();
String getName();
Double getPrice();
}
整个课程有java, 大数据, python
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;
}
@Override
public Integer getId() {
return id;
}
@Override
public String getName() {
return name;
}
@Override
public Double getPrice() {
return price;
}
}
现在我们要给java课程做优惠活动, 如果修改javaCourse中的getPrice()方法, 存在一定风险, 可能影响其他调用.
我们在不修改代码的前提下实现这个功能, 我们现在实现一个JavaDiscountCourse
:::info
定义接口并实现方法, 不修改原有的, 只通过继承来扩展, 都可以体现出开闭原则
:::
public class JavaDiscountCourse extends JavaCourse {
public JavaDiscountCourse(Integer id, String name, Double price) {
super(id, name, price);
}
//获取原价
public Double getOriginPrice() {
return super.getPrice();
}
public Double getPrice() {
return super.getPrice() * 0.61;
}
}