开放封闭原则是面向对象设计中的一个重要原则,它强调软件实体(类、模块、函数等)应该对扩展开放,对修改关闭,以实现代码的可维护性、可扩展性和可复用性。这意味着我们应该通过添加新的代码,而不是修改现有的代码,来扩展系统的功能。
开放封闭原则由Bertrand Meyer在1988年提出,它的原则可以归纳为以下两点:
为了实现开放封闭原则,我们可以采用以下方法:
我们将实现一个简单的图形绘制程序,支持绘制不同类型的图形,包括圆形、矩形和三角形。
首先,我们定义一个图形抽象接口Shape:
public interface Shape {
void draw();
}
然后,我们实现具体的圆形、矩形和三角形类,它们分别实现Shape接口,并且都有一个draw()方法来绘制相应的图形。
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a rectangle");
}
}
public class Triangle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a triangle");
}
}
接下来,我们创建一个绘图程序,它包含一个draw()方法,用于绘制多个图形,同时它也是一个可扩展的类,因为它可以添加新的图形类型。
import java.util.ArrayList;
import java.util.List;
public class Drawing {
private List<Shape> shapes = new ArrayList<Shape>();
public void addShape(Shape shape) {
shapes.add(shape);
}
public void draw() {
for (Shape shape : shapes) {
shape.draw();
}
}
}
在这个绘图程序中,我们通过定义Shape接口和使用多态的特性,将具体实现与客户端解耦合,从而实现了代码的可扩展性和可复用性。当需要添加新的图形类型时,我们只需要定义一个新的类,实现Shape接口,并且在Drawing类中添加一个addShape()方法即可,不需要修改已有的代码。
同时,如果我们需要修改某个图形的绘制方式,也可以通过添加新的类或重构现有类的方式来实现,而不需要直接修改现有的代码。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。