📜  Python设计模式-要点(1)

📅  最后修改于: 2023-12-03 15:34:32.527000             🧑  作者: Mango

Python设计模式-要点

设计模式是解决特定问题的可重用方案集合,它为我们提供了一种在软件开发中解决常见问题的思路。Python语言中也有很多与设计模式相关的库和框架。

常用的设计模式
1. 单例模式

单例模式是最常见的设计模式之一,它在运行时只创建一个对象实例,并提供了一个全局访问点。这种模式常被用于配置文件、日志系统、数据库连接等需要全局共享的场景。

实现方式

class Singleton:
    _instance = None
    
    def __new__(cls):
        if not cls._instance:
            cls._instance = super().__new__(cls)
        
        return cls._instance
2. 工厂模式

工厂模式是根据不同的参数,返回不同的类实例的一种设计模式。工厂模式可以为复杂的程序创建简单的API,将复杂性留给工厂,而API将只需执行简单的操作。

实现方式

class Dog:
    def __init__(self):
        self.name = 'Dog'

class Cat:
    def __init__(self):
        self.name = 'Cat'

class PetFactory:
    def get_pet(self, pet_type):
        if pet_type == 'dog':
            return Dog()
        elif pet_type == 'cat':
            return Cat()
        else:
            raise ValueError(f"Invalid pet type: {pet_type}")
3. 装饰器模式

装饰器模式是在不修改原有代码的情况下,增加新功能的一种设计模式。通过在原有代码上添加新的装饰层,而不是修改原有代码,我们可以很容易地将新功能逐层叠加到我们的代码中。

实现方式

def log(func):
    def wrapper(*args, **kwargs):
        print(f"[log] calling {func.__name__} with args={args}, kwargs={kwargs}")
        return func(*args, **kwargs)
    
    return wrapper

@log
def my_function():
    pass
4. 观察者模式

观察者模式用于监控对象的状态变化。当被监测的对象状态发生变化时,通知已经注册的所有观察者。这种模式常用于GUI编程中,用于实现各种消息传递机制。

实现方式

class Subject:
    def __init__(self):
        self._observers = []
        
    def attach(self, observer):
        self._observers.append(observer)
        
    def detach(self, observer):
        self._observers.remove(observer)
        
    def notify(self, value):
        for observer in self._observers:
            observer.update(value)
            
class Observer:
    def __init__(self):
        pass
    
    def update(self, value):
        print(value)
应用设计模式

设计模式是最好的实践方式,通过应用设计模式,我们可以提高代码的可读性和可维护性,我们也可以更好地理解和学习Python语言。