开闭原则(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;}@Overridepublic Integer getId() {return id;}@Overridepublic String getName() {return name;}@Overridepublic 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;}}

