软件设计原则:我在 Python 中的应用

发布: (2025年12月5日 GMT+8 08:02)
4 min read
原文: Dev.to

Source: Dev.to

为什么设计原则很重要

想象一下,你已经完成了一个小项目,六个月后你回来修复一个 bug 或添加一个功能。如果你的代码很乱,你会花更多时间 弄清楚发生了什么,而不是实际解决问题。良好的设计原则可以让你的代码:

  • 易于阅读
  • 易于维护
  • 对未来的更改保持灵活

最常见的一套设计原则是 SOLID

  • 单一职责原则(SRP) – 每个类或函数只应承担一种职责。
  • 开放/封闭原则(OCP) – 类应该对扩展开放,对修改封闭。
  • 里氏替换原则(LSP) – 子类应能够替换父类而不导致程序出错。
  • 接口分离原则(ISP) – 不要强迫类实现它们不需要的方法。
  • 依赖倒置原则(DIP) – 高层模块应依赖抽象,而不是具体的低层模块。

Python 中的真实示例

为了让概念更具体,假设我在构建一个 通知系统,用户可以通过电子邮件或短信接收提醒。下面展示我如何应用这些设计原则:

from abc import ABC, abstractmethod

# Interface defining what a Notifier should do
class Notifier(ABC):
    @abstractmethod
    def send(self, message: str):
        pass

# SRP: Each notifier has a single responsibility
class EmailNotifier(Notifier):
    def send(self, message: str):
        print(f"Sending email: {message}")

class SMSNotifier(Notifier):
    def send(self, message: str):
        print(f"Sending SMS: {message}")

# OCP & DIP: NotificationService works with any notifier
class NotificationService:
    def __init__(self, notifiers: list[Notifier]):
        self.notifiers = notifiers

    def notify_all(self, message: str):
        for notifier in self.notifiers:
            notifier.send(message)

# Using the system
email = EmailNotifier()
sms = SMSNotifier()
service = NotificationService([email, sms])
service.notify_all("Your order has been shipped!")

原则的具体应用

  • SRP: 每个类只有一个职责(发送邮件或短信)。
  • OCP: 可以在不修改 NotificationService 的情况下添加新通知方式(例如 WhatsApp)。
  • DIP 与 ISP: NotificationService 依赖于 Notifier 接口,而不是具体的实现类。

这种结构使系统保持 灵活易于扩展,并且 代码整洁,即使随着功能的增长也能轻松维护。

结论

应用设计原则不仅是一种建议,更是对代码质量和寿命的投资。遵循 SRP、OCP、DIP 以及其他 SOLID 原则,可以让代码更易理解、更安全地修改、并且更具可扩展性。

目标并非仅让软件今天能运行,而是构建一个能够在明天继续成长、适应变化而不产生复杂性的系统。从一开始就采用这些原则,能够确保项目更干净、改动更简单、协作更顺畅。

Back to Blog

相关文章

阅读更多 »