标签:xtend ntp pen 继承 super 打折 closed 建立 png
一个软件实体如类、模块和函数应该对扩展开放, 对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实 现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原 则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽可能不修改源代码,但是可以增 加新功能。
一个课程系统里面,有不同的课程,课程有统一的行为,获得课程的id,名称,价格,定义一个抽象接口ICourse:
public interface ICourse {
Long getId();
BigDecimal getPrice();
String getName();
}
java课程继承了ICourse,内部实现相关的方法,如果有其他的课程,也这样实现
public class JavaClass implements ICourse {
private Long id ;
private BigDecimal price;
private String name;
public JavaClass(Long id, BigDecimal price, String name) {
this.id = id;
this.price = price;
this.name = name;
}
@Override
public Long getId() {
return id;
}
@Override
public BigDecimal getPrice() {
return price;
}
@Override
public String getName() {
return name;
}
}
我们要对课程进行打折,不同课程的打折力度不一样,有的课程不打折,所以不能改变ICourse的接口,在实现类中进行价格的计算:
public class JavaDsicountClass extends JavaClass {
public JavaDsicountClass(Long id, BigDecimal price, String name) {
super(id, price, name);
}
public BigDecimal getDiscountPrice(){
BigDecimal price = this.getPrice();
//高精度计算使用BigDecimal内部运算的方法
BigDecimal discountPrice = price.multiply(BigDecimal.valueOf(0.6));
return discountPrice;
}
}
为了不影响原来的价格,对打折的价格除进行了单独额处理,总体类图如下
标签:xtend ntp pen 继承 super 打折 closed 建立 png
原文地址:https://www.cnblogs.com/liweiweicode/p/12380518.html