python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python 工厂模式

Python中工厂模式的实现小结

作者:迹忆客

工厂模式是一种创建型设计模式,通过定义一个工厂类,将对象的实例化过程封装起来,本文主要介绍了Python中工厂模式的实现小结,具有一定的参考价值,感兴趣的可以了解一下

工厂设计模式属于创意设计模式范畴。 创建设计模式提供了许多对象创建技术,从而提高了代码的可重用性和灵活性。

工厂方法是一种创建对象而不指定其具体类的方法。

它以单个父类(抽象类或接口)定义对象的通用结构,而子类提供实例化对象的完整实现的方式提供抽象和多态性。

在Python中实现工厂方法

在下面的代码中,abc是一个代表抽象基类的包,我们从中导入了ABCMeta(用于声明抽象类)和abstractstaticmethod(用于声明抽象静态方法)。

我们定义了一个名为 Person 的通用抽象基类,具有一个抽象静态方法 person_type()。

具体的派生类将实现此方法。 然后我们从 Person 定义了两个派生类,分别名为 Student 和 Teacher。 这两个类都根据需要实现了抽象静态方法 person_type()。

我们声明了工厂方法 PersonFactory 负责在运行时根据用户的输入选择创建 Person 的对象(学生或教师)。

该类有一个静态方法 build_person(),它将 person 类型作为参数,并使用其名称(学生姓名或教师姓名)构造所需的对象。

示例代码:

#Python 3.x
from abc import ABCMeta, abstractstaticmethod
class Person(metaclass=ABCMeta):
    @abstractstaticmethod
    def person_type():
        pass
class Student(Person):
    def __init__(self, name):
        self.name=name
        print("Student Created:", name)
    def person_type(self):
        print("Student")
class Teacher(Person):
    def __init__(self, name):
        self.name=name
        print("Teacher Created:", name)
    def person_type(self):
        print("Teacher")
class PersonFactory:
    @staticmethod
    def build_person(person_type):
        if person_type == "Student":
            name=input("Enter Student's name: ")
            return Student(name)
        if person_type == "Teacher":
            name=input("Enter Teacher's name: ")
            return Teacher(name)
if __name__== "__main__":
    choice=input("Enter the Person type to create: ")
    obj=PersonFactory.build_person(choice)
    obj.person_type()

输出:

#Python 3.x
Enter the Person type to create: Teacher
Enter Teacher's name: Jhon
Teacher Created: Jhon
Teacher

Python 中工厂方法的优点

Python 中工厂方法的缺点

到此这篇关于Python中工厂模式的实现小结的文章就介绍到这了,更多相关Python 工厂模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文