您的位置:首页 > 健康 > 养生 > 百度推广代理商名单_360建筑网招聘党国根_谷歌seo公司_淘数据

百度推广代理商名单_360建筑网招聘党国根_谷歌seo公司_淘数据

2025/4/7 18:31:23 来源:https://blog.csdn.net/u011019141/article/details/146611700  浏览:    关键词:百度推广代理商名单_360建筑网招聘党国根_谷歌seo公司_淘数据
百度推广代理商名单_360建筑网招聘党国根_谷歌seo公司_淘数据

开闭原则(Open-Closed Principle, OCP) 是面向对象设计中的重要原则之一,它的核心思想是:

  • 对扩展开放(Open for extension):软件实体(类、模块、函数等)应该可以扩展,以满足新的需求。
  • 对修改关闭(Closed for modification):在扩展功能时,不应该修改已有的代码,而是通过新增代码来实现变化。

通俗理解

想象你经营了一家餐厅,菜单已经固定,但你想增加新菜品。

  • 如果你直接修改菜单(修改已有代码),可能会影响老顾客的习惯,甚至导致错误。
  • 更好的做法是:新增一个菜品(扩展代码),而不是修改现有菜单。

如何遵循开闭原则

  1. 使用抽象(接口或抽象类):让具体实现继承或实现抽象,而不是修改原有代码。
  2. 使用多态:基于抽象定义行为,不直接依赖具体实现。
  3. 组合优于继承:通过组合不同对象来扩展功能,而不是修改现有代码。

违反开闭原则的例子

假设我们有一个形状类 Shape,它支持计算面积:

class Shape {String type;
}
class AreaCalculator {public double calculateArea(Shape shape) {if (shape.type.equals("circle")) {return Math.PI * 5 * 5; // 假设半径是5} else if (shape.type.equals("rectangle")) {return 10 * 5; // 假设长10宽5}return 0;}
}

问题:

  • 如果要添加新的形状(比如三角形),我们必须修改 calculateArea() 方法,违反了开闭原则。

符合开闭原则的实现

我们可以使用抽象类来避免修改已有代码:

abstract class Shape {abstract double getArea();
}class Circle extends Shape {double radius;Circle(double radius) { this.radius = radius; }double getArea() { return Math.PI * radius * radius; }
}class Rectangle extends Shape {double width, height;Rectangle(double width, double height) {this.width = width;this.height = height;}double getArea() { return width * height; }
}class AreaCalculator {public double calculateArea(Shape shape) {return shape.getArea(); // 直接调用多态方法}
}

好处:

  • 不修改 AreaCalculator 的代码,而是扩展 Shape,符合开闭原则。
  • 如果新增 Triangle,只需创建新类,而不影响 AreaCalculator

总结

开闭原则的核心是:扩展功能时,不要修改已有代码,而是新增代码。
它使代码更稳定、更易维护,符合面向对象编程的设计理念。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com