3.6

工厂模式与单例模式

  1. 工厂模式(Factory Pattern)
    用于解耦对象创建和使用,适用于对象创建逻辑复杂的场景。

代码示例:简单工厂模式生成报表

python
运行
class ReportFactory:
@staticmethod
def create_report(report_type):
if report_type == "pdf":
return PDFGenerator()
elif report_type == "excel":
return ExcelGenerator()
else:
raise ValueError("不支持的报表类型")

使用工厂创建对象

generator = ReportFactory.create_report("excel")
generator.generate(data)
2. 单例模式(Singleton Pattern)
确保一个类只有一个实例,适用于全局配置、日志记录等场景。

代码示例:线程安全的单例模式(Python)

python
运行
import threading

class SingletonLogger:
_instance = None
_lock = threading.Lock()

def __new__(cls):
    if not cls._instance:
        with cls._lock:
            if not cls._instance:
                cls._instance = super().__new__(cls)
                cls._instance.log_file = open("app.log", "a")
    return cls._instance

def log(self, message):
    self.log_file.write(f"{message}\n")
    self.log_file.flush()

使用示例

logger1 = SingletonLogger()
logger2 = SingletonLogger()
logger1.log("第一条日志")
logger2.log("第二条日志") # 与logger1是同一个实例

  1. 设计模式选择原则
    优先使用简单模式,避免过度设计
    从实际需求中提炼模式,而非为用模式而用
posted @ 2025-03-06 14:18  Echosssss  阅读(7)  评论(0)    收藏  举报