搞定开闭原则的设计模式一篇文章就够了!!!

Posted 南淮北安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搞定开闭原则的设计模式一篇文章就够了!!!相关的知识,希望对你有一定的参考价值。

一、定义

在面向对象编程领域中,开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的,但对于修改是封闭的。

这意味着应该用抽象定义结构,用具体实现扩展细节,以此确保软件系统开发和维护过程的可靠性。

二、示例

对于外部的调用方来说,只要能体现出面向抽象编程,定义出接口并实现其方法,即不修改原有方法体,只通过继承方式进行扩展,都可以体现出开闭原则。

计算三种形状的面积:长方形,三角形,圆形

public interface ICalculationArea {
    //计算长方形面积
    double rectangle(double x, double y);

    //计算三角形面积
    double triangle(double x, double y, double z);

    //计算圆形面积
    double circular(double r);
}

实现类中分别实现三种类型的面积

public class CalculationArea implements ICalculationArea {
    private final static double n = 3.14D;

    @Override
    public double rectangle(double x, double y) {
        return x * y;
    }

    @Override
    public double triangle(double x, double y, double z) {
        double p = (x + y + z) / 2;
        return Math.sqrt(p * (p - x) * (p - y) * (p - z));
    }

    @Override
    public double circular(double r) {
        return n * r * r;
    }
}

此时的精度 π,可能会随着不同的场景取不同的范围,所以此时会出现个例需求的变化而改变预定的实现类

采用开闭原则,继承父类扩展需要的方法,同时保留原有的方法,新增自己需要的方法

public class CalculationAreaExt extends CalculationArea {
    private final static double n = 3.1415926D;

    @Override
    public double circular(double r) {
        return n * r * r;
    }
}

此时,单独对圆面积求解进行了扩展,其他的方法不变,可以继续使用

以上是关于搞定开闭原则的设计模式一篇文章就够了!!!的主要内容,如果未能解决你的问题,请参考以下文章

搞定里式替换原则的设计模式一篇文章就够了!!!

搞定设计模式之接口隔离原则一篇文章就够了!!!

搞定设计模式之迪米特法则一篇文章就够了!!!

搞定设计模式之工厂模式一篇文章就够了!!!

搞定单一职责的设计模式一篇文章就够了!!!

搞定 WeakHashMap 的工作原理一篇文章就够了!!!