开闭原则(Open-Closed Principle,OCP):是指一个软件实体(如类、模块、函数)应该对扩展开放,对修改关闭。开闭是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节,提高了软件系统的复用性好可维护性。
开闭原则的核心思想就是面向抽象编程,如以下代码:
1.先写一个课程接口
public interface ICourse{
Integer getId();
String getName();
Doble getPrice();
}
2.课程有Java,大数据,人工智能,Python 等。然后创建一个 Java 课程类 JavaCourse.
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 Doble getPrice(){
return this.price;
}
}
3.如果我们Java课程需要做活动打折,直接修改JavaCourse中的getPrice()方法,可能会导致其他地方的使用。那如何实现java课程打折功能呢?我们可以新增一个java打折类JavaDiscount.
public class JavaDiscount extends JavaCourse{
public JavaDiscount(Integer id, String name,Double price){
super(id,name,price);
}
public Double getOriginPrice(){
return super.getPrice();
}
public Double getPrice(){
return super.getPrice*0.78;
}
}
4.如果我们需要对大数据课程进行打折,也可以为大数据课程添加一个新的打折类BigDataDiscount,这样就可以在不修改原先的代码,只需要添加一个新的类就可以实现功能。