开闭原则
定义: 一个软件实体如类,模块,和函数应该对扩展开发对修改关闭
用抽象构建框架,用实现扩展细节
优点:提高软件系统的可复用性与可维护性
//定义一个接口
public interface ICourse {
Integer getId();
String getName();
Double getPrice();
Double getDiscountPrice();
}
// 接口的实现类
public class JavaCourse implements ICourse{
private Integer id;
private String name;
private Double price;
public JavaCourse() {
}
public JavaCourse(Integer id, String name, Double price) {
this.id = id;
this.name = name;
this.price = price;
}
public void setId(Integer id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public Integer getId() {
return this.id;
}
@Override
public String getName() {
return this.name;
}
@Override
public Double getPrice() {
return this.price;
}
@Override
public Double getDiscountPrice() {
return this.price*0.8;
}
}
// 当需要扩展时
public class JavaDiscountPriceCourse extends JavaCourse {
public JavaDiscountPriceCourse() {
}
public JavaDiscountPriceCourse(Integer id, String name, Double price) {
super(id, name, price);
}
@Override
public Double getPrice() {
return super.getPrice() * 0.8;
}
public Double getOriginPrice() {
return super.getPrice();
}
}