软件设计原则:我在 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 原则,可以让代码更易理解、更安全地修改、并且更具可扩展性。
目标并非仅让软件今天能运行,而是构建一个能够在明天继续成长、适应变化而不产生复杂性的系统。从一开始就采用这些原则,能够确保项目更干净、改动更简单、协作更顺畅。