低级设计(LLD)是软件开发中的一个关键阶段,它弥合了高级设计和实际实现之间的差距。高层设计侧重于架构蓝图,而 LLD 则处理如何实现每个组件、类或功能以满足整个系统的要求。
简单来说,LLD 涉及设计类、方法、接口以及它们之间的交互,确保代码高效、可维护和可扩展。对于软件工程师来说,这是一项基本技能,尤其是在构建需要健壮、可重用且易于随时间修改的系统时。
本博客将向您介绍底层设计中涉及的关键概念、原则和技术,并展示它们如何帮助您编写更好、更易于维护的代码。
我们想到的第一个问题是:
为什么底层设计很重要?
为了弥合 LLD 概念和实际代码之间的差距,让我们通过以下步骤分解设计低级图的过程:
第一步:面向对象原则
第 2 步:坚实的原则
第三步:设计模式
面向对象编程概念的 4 个支柱是开始学习底层设计的必备条件。我已经在简短的结帐博客中介绍了这个概念
S:单一职责原则 (SRP)
示例:想象一个处理用户身份验证和日志记录的类。如果我们需要改变日志记录的工作方式,我们最终也会修改身份验证类。这违反了建议零售价。相反,我们应该有两个单独的类:一个用于用户身份验证,另一个用于日志记录,因此每个类都有一个职责。
O:开闭原则(OCP)
示例:考虑一个通过信用卡处理付款的付款处理系统。如果您需要添加对 PayPal 的支持,您应该通过添加用于 PayPal 付款的新类来扩展它,而不是修改现有代码。这确保了现有系统保持稳定,同时允许添加新功能。
L:里氏替换原理(LSP)
示例:如果我们有一个 Bird 类,它有一个方法 Fly(),并且我们创建了一个不能飞的子类 Penguin,这违反了 LSP。 Penguin 类不应继承 Fly(),因为它会改变预期的行为。相反,应该重构 Bird 类以处理可以和不能以不同方式飞行的鸟类。
I:接口隔离原则(ISP)
示例:假设我们有一个接口 Animal,其方法为 Fly()、swim() 和 walk()。实现 Animal 的 Dog 类将被迫定义 Fly(),而它并不需要。为了遵守 ISP,我们应该将 Animal 接口拆分为更小的接口,例如 Flyable、Swimmable 和 Walkable,以避免在类上强制使用不相关的方法
D:依赖倒置原则(DIP)
示例:在电子商务应用程序中,如果结账流程(高级模块)直接依赖于 PayPal(低级模块)等特定支付网关,则更改支付网关需要修改结账流程。通过引入抽象,例如 PaymentProcessor 接口,结帐流程可以使用任何付款方式,而无需了解 PayPal 或任何其他服务的具体信息。
设计模式是针对软件设计中出现的常见问题的经过验证的解决方案。它们是开发人员可以遵循的最佳实践,可以有效、系统地解决特定的设计问题。设计模式不是重新发明轮子,而是提供了解决重复出现问题的标准方法。
设计模式可以分为三种类型:
创建模式:处理对象创建
结构模式:处理对象组合和关系
行为模式:处理对象交互和责任
现在我们已经通过探索 SOLID 原则奠定了基础,并介绍了设计模式的广阔前景,我们准备好深入研究了!在即将推出的系列中,我将通过实际示例和现实场景来分解每种设计模式。无论您是刚刚开始设计之旅还是希望提高自己的技能,这些模式都将帮助您编写更清晰、更具可扩展性的代码。请继续关注下一篇博客,我们将一步步揭开第一个设计模式!
如果您已经做到了这一步,请不要忘记点赞❤️,并在下面发表评论以提出任何问题或想法。您的反馈对我来说至关重要,我很乐意听到您的来信!
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3