面试题答案
一键面试开闭原则含义
开闭原则(Open-Closed Principle,OCP)是面向对象编程中的一个重要原则,其含义是:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。即当软件需要进行功能扩展时,应该通过添加新代码的方式来实现,而不是修改已有的代码。这样可以提高软件的稳定性、可维护性和可扩展性。
Python代码遵循开闭原则示例
1. 定义图形基类
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def draw(self):
pass
2. 定义具体图形类
class Circle(Shape):
def draw(self):
print("绘制圆形")
class Rectangle(Shape):
def draw(self):
print("绘制矩形")
3. 定义图形绘制管理类
class ShapeDrawer:
def __init__(self):
self.shapes = []
def add_shape(self, shape):
self.shapes.append(shape)
def draw_all(self):
for shape in self.shapes:
shape.draw()
4. 使用示例
drawer = ShapeDrawer()
circle = Circle()
rectangle = Rectangle()
drawer.add_shape(circle)
drawer.add_shape(rectangle)
drawer.draw_all()
5. 添加新图形类型
当需要添加新的图形类型,如三角形时,只需要定义新的三角形类并继承Shape
基类,而不需要修改原有代码。
class Triangle(Shape):
def draw(self):
print("绘制三角形")
triangle = Triangle()
drawer.add_shape(triangle)
drawer.draw_all()
在上述代码中,Shape
类是所有图形类的基类,具体图形类(如Circle
、Rectangle
、Triangle
)继承自Shape
类并实现draw
方法。ShapeDrawer
类用于管理和绘制所有图形。当需要添加新的图形类型时,只需要创建新的类继承Shape
并实现draw
方法,然后将其添加到ShapeDrawer
中即可,无需修改Shape
类、ShapeDrawer
类以及其他已有的具体图形类的代码,遵循了开闭原则。