[笔记]代码-抽象类与工厂模式py

Abstract: 记一下python实现的抽象类与工厂模式,还有调用的代码。


抽象类与注册功能

from abc import ABC, abstractmethod

class Processor(ABC):
    _registry = {}

    def __init_subclass__(cls, name: str, **kwargs):
        super().__init_subclass__(**kwargs)
        cls._registry[name] = cls

    @classmethod
    def create(cls, name: str) -> "Processor":
        return cls._registry[name]()

    @abstractmethod
    def process(self, data: str) -> str:
        pass

继承的子类

class OpcProcessor(Processor, name="opc"):
    def process(self, data: str) -> str:
        return f"[OPC] {data}"

class HttpProcessor(Processor, name="http"):
    def process(self, data: str) -> str:
        return f"[HTTP] {data}"

实现多态

用新的class来实现多态,隐藏class

class JobRunner:
    def __init__(self, processor_name: str):
        self.processor = Processor.create(processor_name)

    def run(self, data: str) -> str:
        return self.processor.process(data)

使用方式

runner = JobRunner("opc")
print(runner.run("temperature=36"))

Last modified on 2026-04-08