开闭原则:(SRP) 面向对象七个基本原则之一
- 对扩展开放:软件实体(类、模块、函数等)应该能够通过增加新功能来进行扩展。
- 对修改关闭:一旦软件实体被开发完成,就不应该修改它的源代码。
要看实际场景,比如组内大佬高级程序员开发的公用方法sdk很多人引用,这时候肯定要去继承然后实现,如果是自己开发,则没有必要这样继承,看实际业务需求。
例子
比如有一个需求,需要实现计算圆形面积。
标准SDK只提供了Π=3.14D.
A程序员觉得SDK的精度已经满足了他的需求.
B程序员需要Π的后33位.
那么B程序员应该继承标准SDK自己实现而不是傻乎乎的跑去修改SDK.
代码
整体结构

接口
用于制定规范
这里的两个接口分别实现计算圆形和矩形

实现类
用于实现接口从而实现单一职责原则。而不是把所有代码写在一个类里面成一坨。

扩展类
即当前"标准" SDK无法满足我们的需求:需要足够精度 | 但是又不能直接修改标准 则使用扩展满足开闭原则

测试类
这里采用了Spring boot,如果没有学过的话则自己new一下即可。
