赞
踩
工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。通过使用工厂方法模式,可以将对象的创建过程与使用过程分离,从而提高代码的灵活性和可扩展性。
工厂方法模式主要包括以下几个角色:
假设我们有一个日志系统,可以记录日志到控制台或文件。我们可以使用工厂方法模式来实现不同日志记录方式的选择和创建。
from abc import ABC, abstractmethod class Logger(ABC): @abstractmethod def log(self, message: str): pass class ConsoleLogger(Logger): def log(self, message: str): print(f"Console: {message}") class FileLogger(Logger): def __init__(self, filename: str): self.filename = filename def log(self, message: str): with open(self.filename, 'a') as f: f.write(f"File: {message}\n")
class LoggerFactory(ABC):
@abstractmethod
def create_logger(self) -> Logger:
pass
class ConsoleLoggerFactory(LoggerFactory):
def create_logger(self) -> Logger:
return ConsoleLogger()
class FileLoggerFactory(LoggerFactory):
def __init__(self, filename: str):
self.filename = filename
def create_logger(self) -> Logger:
return FileLogger(self.filename)
def main():
# 创建控制台日志记录器
console_factory = ConsoleLoggerFactory()
console_logger = console_factory.create_logger()
console_logger.log("This is a console log message.")
# 创建文件日志记录器
file_factory = FileLoggerFactory("app.log")
file_logger = file_factory.create_logger()
file_logger.log("This is a file log message.")
if __name__ == "__main__":
main()
在这个示例中,Logger
是抽象产品,ConsoleLogger
和FileLogger
是具体产品。LoggerFactory
是抽象工厂,ConsoleLoggerFactory
和FileLoggerFactory
是具体工厂。通过工厂方法模式,我们可以灵活地选择和创建不同类型的日志记录器,而不需要修改客户端代码。
工厂方法模式是一种创建型设计模式,通过定义一个用于创建对象的接口,将对象的创建过程延迟到子类,从而提高代码的灵活性和可扩展性。通过使用工厂方法模式,可以在不修改现有代码的情况下增加新产品,减少了代码耦合,提高了系统的可维护性。合理应用工厂方法模式,可以显著提升代码质量和设计水平。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。