设计模式原则之:开放封闭原则
发布人:shili8
发布时间:2023-12-06 19:02
阅读次数:98
开放封闭原则是设计模式中的重要原则之一,它要求软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。也就是说,当需要对软件进行扩展时,应该尽量通过添加新的代码来实现,而不是修改已有的代码。
下面我们通过一个简单的代码示例来说明开放封闭原则的应用。
假设我们有一个图形绘制的程序,其中有一个Shape类和它的子类Circle和Rectangle。现在我们需要给这些图形添加一个新的功能,即计算图形的面积。
java // Shape类 public abstract class Shape { public abstract double area(); } // Circle类 public class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius; } @Override public double area() { return Math.PI * radius * radius; } } // Rectangle类 public class Rectangle extends Shape { private double width; private double height; public Rectangle(double width double height) { this.width = width; this.height = height; } @Override public double area() { return width * height; } }
现在我们需要给Shape类的子类添加一个新的功能,即计算图形的周长。按照开放封闭原则,我们应该通过扩展而不是修改来实现这个功能。
java // 扩展Shape类 public abstract class Shape { public abstract double area(); public abstract double perimeter(); // 新添加的方法 } // 扩展Circle类 public class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius; } @Override public double area() { return Math.PI * radius * radius; } @Override public double perimeter() { return 2 * Math.PI * radius; } } // 扩展Rectangle类 public class Rectangle extends Shape { private double width; private double height; public Rectangle(double width double height) { this.width = width; this.height = height; } @Override public double area() { return width * height; } @Override public double perimeter() { return 2 * (width + height); } }
通过上面的代码示例,我们可以看到,通过扩展而不是修改的方式,我们成功地实现了对Shape类的子类添加新功能的需求,符合开放封闭原则。
总结来说,开放封闭原则要求我们在设计软件时应该尽量通过扩展来实现新的功能,而不是通过修改已有的代码。这样可以使得软件更加稳定、可靠,并且易于维护和扩展。