工厂模式Python实现
class Shape:
def draw(self):
pass
class Rectangle(Shape):
def draw(self):
print("Drawing a rectangle")
class Circle(Shape):
def draw(self):
print("Drawing a circle")
class ShapeFactory:
@classmethod
def create_shape(cls, shape_type):
if shape_type == 'rectangle':
return Rectangle()
elif shape_type == 'circle':
return Circle()
else:
raise ValueError("Invalid shape type")
if __name__ == '__main__':
rectangle = ShapeFactory.create_shape('rectangle')
rectangle.draw()
circle = ShapeFactory.create_shape('circle')
circle.draw()
在上面的代码中,我们定义了一个Shape
基类和两个具体的子类Rectangle
和Circle
。然后我们定义了一个ShapeFactory
工厂类,它定义了一个类方法create_shape
,根据传入的参数不同分别创建不同的对象
最后,我们在主函数中使用ShapeFactory
工厂类创建了一个Rectangle
对象和一个Circle
对象,并调用了它们的draw
方法