设计模式--开放封闭原则
开放封闭原则
开放-封闭原则:是说软件主题可以扩展但是不可修改。
特点:对于扩展是开放的,对于更改是封闭的。
在做系统是不可能做到一开始就确定了所有需求,以后不会变化的。只能在需求来临时,做尽量少的更改,不至于整个系统推翻重来。这就需要当变化来临时,我们创建抽象将相似的变化隔离出去。这样面对新的需求,就是添加新的代码,而不是更改现有的代码。
如:实现一个简单计算器功能时,可以只在主函数中实现,当我们需要添加功能时,改动就涉及到了所有的代码,而开放--封闭原则要求对修改是封闭的。如果我们将运算方法抽象分离出去,那么我们添加新的计算方法时,只需添加相应的类,而不需改动原先的代码。这就是对于扩展是开放的,而对于更改就是封闭的。
注意
查明可能发生的变化等待的时间越长,要创建正确的抽象就越困难,你想想某个功能被到处应用,都是相似的代码,此时你再想将其抽象出来,考虑分离,这是很困难的。
开放封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,可复用,灵活性好。开发人员应对哪些可能发生频繁变化的部分做出抽象,分离。然而程序中任何地方都进行刻意的抽象并不是一个好主意,拒绝不成熟的抽象和抽象本身一样重要。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署