搞定开闭原则的设计模式一篇文章就够了!!!
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;
}
}
此时,单独对圆面积求解进行了扩展,其他的方法不变,可以继续使用
以上是关于搞定开闭原则的设计模式一篇文章就够了!!!的主要内容,如果未能解决你的问题,请参考以下文章