23种设计模式介绍(Python示例讲解)(7)

2023-04-30 来源:飞速影视
TypeError: Can"t instantiate abstract class Shape with abstract methods area # shape = Shape() # 只能实例化子类(派生类) rectangle = Rectangle(3, 4) # 12 print(rectangle.area()) circle = Circle(5) print(circle.area()) #78.5
代码讲解:
在上面的例子中,我们定义了一个抽象基类 Shape,它有一个抽象方法 area,子类必须实现这个方法。然后我们定义了两个子类 Rectangle 和 Circle,它们分别实现了 Shape 类中的 area 方法。由于 Shape 类是一个抽象基类,不能直接实例化,所以如果我们尝试实例化 Shape 类,就会得到一个 TypeError 异常。但是我们可以实例化 Rectangle 和 Circle 类,并调用它们的 area 方法来计算它们的面积。注意,由于 Rectangle 和 Circle 类都实现了 Shape 类中的 area 方法,所以它们都可以被看作是 Shape 类的子类。
2、抽象工厂模式(AbstractFactory)
抽象工厂模式(Abstract Factory)是一种创建型设计模式,它提供一个接口,用于创建一系列相关或相互依赖的对象,而不需要指定它们的具体类。
抽象工厂模式的主要目的是封装一组具有相似主题的工厂,使客户端能够以一种与产品实现无关的方式创建一组相关的产品。抽象工厂模式提供了一个抽象工厂类和一组抽象产品类,具体工厂和具体产品类由它们的子类来实现。
下面是抽象工厂模式的 UML 类图:
--------------------- | AbstractFactory | --------------------- | create_product_A() | | create_product_B() | --------------------- / / / / ---------------- ---------------- | ConcreteFactory1 | | ConcreteFactory2 | ----------------- ----------------- | create_product_A()| | create_product_A()| | create_product_B()| | create_product_B()| ------------------ ------------------ / / / / / / -------------- -------------- -------------- -------------- | ProductA1 | | ProductA2 | | ProductB1 | | ProductB2 | -------------- -------------- -------------- --------------
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号