软件设计七大设计原则之开闭原则

153 阅读1分钟

开闭原则

定义: 一个软件实体如类,模块,和函数应该对扩展开发对修改关闭

用抽象构建框架,用实现扩展细节

优点:提高软件系统的可复用性与可维护性

//定义一个接口 
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();
    }
}