文章目录
开闭原则的定义
- 开闭原则的定义
- 开闭原则代码实战
对扩展开放, 对原有的修改封闭. 类似于封装好的jar包, 只能对其扩展功能, 不能对其jar包修改 .
开闭原则代码实战需求: 计算圆的面积. 原有封装好的jar包中定义的π 是3.14, 但某个需求需要更高精度的π, 那么就需要对原有的计算圆面积的π进行扩展, 提高精度.
接口: ICalculationArea
public interface ICalculationArea {
/**
*计算面积 圆形
* @param r 圆的半径
* @return
*/
double circular(double r);
}
jar包中的实现类
public class CalculationArea implements ICalculationArea {
private final static double π = 3.14D;
public double circular(double r) {
return π * r * r;
}
}
扩展类CalculationAreaExt , 同样实现了ICalculationArea 接口, 定义了更高精度的π
public class CalculationAreaExt implements ICalculationArea {
// 更高的精度
private final static double π = 3.1415926D;
public double circular(double r) {
return π * r * r;
}
}
测试类 , 分别创建两个对象, 一个是扩展类, 一个是原有类 . 都进行圆的面积计算并打印结果.
public class ApiTest {
@Test
public void test_CalculationArea(){
ICalculationArea areaExt = new CalculationAreaExt();
ICalculationArea area = new CalculationArea();
double circularExt = areaExt.circular(10);
double circular = area.circular(10);
System.out.println(circularExt);
System.out.println(circular);
}
}
控制台输出如下
314.15926 314.0
可以看到扩展类成功的输出了更高精度的圆的面积, 实现了对原有类不修改的情况下的扩展.