Python设计模式中的创建型工厂模式

yizhihongxing

一、什么是创建型工厂模式?

创建型工厂模式是一种常见的设计模式,它可以在不直接实例化对象的情况下,通过一个工厂函数或者方法来创建对象,隐藏了对象的创建细节,降低了耦合度,提高了代码的可维护性和可扩展性。工厂模式是一种创建型模式,它定义了一个用于创建对象的接口,让子类决定实例化哪个类。工厂模式可以将一个系统中的所有产品共同的处理方式,抽象成一个接口,从而降低系统的耦合度,提高了扩展性。

二、如何使用工厂模式?

在工厂模式中,我们需要定义一个工厂类,这个工厂类可以生产不同类型的对象,对象由同一个基类创建,每个对象有不同的属性,方法,实现不同的功能。下面我们来看一个简单的例子。

示例1:创建一个圆形对象和矩形对象,这两个对象都属于图形类型,但是它们具有不同的属性和方法。

class Shape:
    def draw(self):
        pass

class Circle(Shape):
    def draw(self):
        print("画一个圆形")

class Rectangle(Shape):
    def draw(self):
        print("画一个矩形")

我们定义了一个图形基类Shape,其中包含一个抽象方法draw()。我们还定义了两个子类Circle和Rectangle,分别实现了基类中的抽象方法draw(),并分别实现了自己的画图方法。

接下来我们定义一个图形工厂类,它可以根据不同的参数生产不同类型的图形对象。

class ShapeFactory:
    def createShape(self, shapeType):
        if shapeType == "CIRCLE":
            return Circle()
        elif shapeType == "RECTANGLE":
            return Rectangle()
        else:
            return None

在工厂类中,我们定义了一个createShape()方法,它可以根据不同的参数来创建不同类型的对象。如果传入参数是"CIRCLE",则返回一个圆形对象,如果是"RECTANGLE",则返回一个矩形对象。

示例2:创建一个计算器对象,这个对象可以进行加、减、乘、除四种运算,每种运算有不同的实现方法。

class Calculator:
    def calculate(self, operator, a, b):
        pass

class Add(Calculator):
    def calculate(self, a, b):
        return a + b

class Subtract(Calculator):
    def calculate(self, a, b):
        return a - b

class Multiply(Calculator):
    def calculate(self, a, b):
        return a * b

class Divide(Calculator):
    def calculate(self, a, b):
        if b == 0:
            return None
        else:
            return a / b

我们定义了一个计算器基类Calculator,其中包含了一个抽象方法calculate()。我们还定义了四个子类Add、Subtract、Multiply和Divide分别表示加、减、乘、除这四种运算,每个子类实现了自己的计算方法。

接下来我们定义一个计算器工厂类,它可以根据不同的参数来创建不同类型的计算器对象。

class CalculatorFactory:
    def createCalculator(self, operator):
        if operator == "+":
            return Add()
        elif operator == "-":
            return Subtract()
        elif operator == "*":
            return Multiply()
        elif operator == "/":
            return Divide()
        else:
            return None

在工厂类中,我们定义了一个createCalculator()方法,它可以根据不同的参数来创建不同类型的计算器对象。如果传入参数是"+",则返回一个加法计算器对象,如果是"-",则返回一个减法计算器对象,依此类推。

三、实现效果

通过使用工厂模式,在保持系统灵活性和可扩展性的同时,也提高了代码的可维护性和可读性。在上面的两个示例中,我们分别定义了图形工厂类和计算器工厂类,这两个工厂类分别可以根据不同的参数来创建不同类型的对象,这种设计方法可以简化对象的创建过程,并且将创建过程和使用过程分离,让代码更加清晰易懂。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python设计模式中的创建型工厂模式 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 如何使用 Redis 的发布/订阅功能来实现消息传递?

    以下是详细讲解如何使用 Redis 的发布/订阅功能来实现消息传递的完整使用攻略。 Redis 发布/订阅简介 Redis 是一种高性能的键值存储数据库,支持多种数据结构和高级功能。其中,发布/订阅是 Redis 的一个重要功能,可以用于实现消息传递。Redis 发布/订阅的特点如下: Redis 发布/订阅是异步的,发布者和订阅者之间没有直接的联系。 Re…

    python 2023年5月12日
    00
  • python通过链接抓取网站详解

    Python通过链接抓取网站详解 简介 Web爬虫是一种自动化程序,可以从互联网上的网站中提取数据。Python可以通过链接抓取网站,将网络数据从HTML源代码中提取出来。 步骤 下面是Python通过链接抓取网站的基本步骤: 导入所需模块。Python有许多模块可以实现网络数据抓取。最常用的是requests和BeautifulSoup。运行pip ins…

    python 2023年5月14日
    00
  • 一行Python代码过滤标点符号等特殊字符

    在 Python 中,我们可以使用正则表达式来过滤标点符号等特殊字符。以下是一行 Python 代码,可以过滤掉字符串中的标点符号等特殊字符: import re text = "Hello, world! This is a test string." filtered_text = re.sub(r'[^\w\s]’, ”, tex…

    python 2023年5月14日
    00
  • Python学习之内置函数总结

    Python学习之内置函数总结 Python是一种高级编程语言,拥有许多方便而有用的内置函数,可以在编写代码时提高效率。本篇文章将会介绍一些常用的内置函数并给出相应的示例说明,帮助初学者更好地理解它们的功能和使用方法。 print() print() 是 Python 中最基本的输出函数,它可以将指定的参数打印到标准输出设备上,例如控制台。我们可以使用 pr…

    python 2023年6月5日
    00
  • Python网络爬虫之爬取微博热搜

    下面是Python网络爬虫之爬取微博热搜的完整攻略: 一、爬取微博热搜的过程 确定爬取目标 要爬取微博热搜,需要先进入微博热搜页面,通过 Firefox 或者 Chrome 等浏览器的开发者工具查看网页结构,找到热搜关键字所在的 html 元素和相应的 xpath 或 css selector。 分析网页结构 在开发者工具中使用抓取工具获取热搜页面的内容,观…

    python 2023年6月6日
    00
  • python 类详解及简单实例

    Python 类详解及简单实例 类和实例 在Python中,我们使用class来定义一个类,实例化一个类得到一个对象,这是面向对象编程的基本概念。 class MyClass: pass my_instance = MyClass() # 实例化一个对象 我们可以使用type()函数来查看对象的类型,如: print(type(my_instance)) #…

    python 2023年5月19日
    00
  • Python使用一行代码获取上个月是几月

    要用一行代码获取上个月的月份,可以使用Python的datetime模块。下面是完整的攻略: 导入datetime模块 首先,需要导入datetime模块,这个模块包含了日期和时间相关的类和方法。 import datetime 获取当前日期和时间 假设当前时间是2022年3月15日,可以使用datetime模块的datetime.now()方法获取当前的日…

    python 2023年6月2日
    00
  • Python开发.exe小工具的详细步骤

    下面详细讲解“Python开发.exe小工具的详细步骤”的完整攻略。 1.安装pyinstaller pyinstaller是一个将Python代码打包成可执行文件的第三方库。在命令行中输入以下命令,即可安装pyinstaller: pip install pyinstaller 2.编写Python代码 编写想要转换为exe文件的Python代码,代码应当…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部