0
点赞
收藏
分享

微信扫一扫

设计模式 开闭原则

文章目录

开闭原则的定义

对扩展开放, 对原有的修改封闭.
类似于封装好的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);
    }

}

控制台输出如下

可以看到扩展类成功的输出了更高精度的圆的面积, 实现了对原有类不修改的情况下的扩展.

举报

相关推荐

0 条评论