- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
设计模式六大原则
引言
在软件设计领域,“设计模式”是无数开发者在实践中总结出的解决常见问题的经典方案。但这些模式并非凭空产生,而是根植于一系列基础设计原则之上。这其中最核心的,便是被称为“设计模式六大原则”的指导性规则。它们如同建筑中的承重墙,为代码的可维护性、扩展性和灵活性提供根本保障。无论是刚入门的新手,还是经验丰富的架构师,理解并熟练应用这六大原则,都是写出“优雅代码”的必经之路。本文将围绕这六大原则,从概念解析到实践方法,逐层展开深入探讨。
一、单一职责原则:让代码“各尽其职”
(一)原则的核心内涵
单一职责原则(SingleResponsibilityPrinciple,SRP)的核心思想可以用一句话概括:一个类或模块应该只负责一项职责。这里的“职责”是指“变化的原因”——如果一个类需要因多种不同的原因被修改,那么它就违反了单一职责原则。例如,一个用户管理类同时包含用户数据存储(如数据库操作)和用户界面渲染(如生成HTML)的逻辑,当数据库结构变更时需要修改它,当界面样式调整时也需要修改它,这两个完全不同的变化原因会让这个类变得脆弱。
(二)违反原则的典型问题
在实际开发中,违反单一职责的情况十分常见。最典型的表现是“大而全”的类:一个类里既有业务逻辑,又有数据操作,甚至包含工具方法。这种代码的直接后果是耦合度高——修改一个功能可能意外影响其他功能。例如,某项目中曾有一个“订单处理类”,同时负责计算订单金额、生成物流单号、发送短信通知。当优化金额计算逻辑时,由于代码高度交织,意外修改了物流单号的生成规则,导致部分订单物流信息错乱。此外,这样的类还会导致测试复杂——每个职责的变更都需要重新测试整个类,增加了维护成本。
(三)实践中的拆分方法
遵循单一职责原则的关键是“识别职责边界”。开发者需要问自己:“这个类(或方法)的存在是为了解决什么问题?”如果答案包含多个独立的问题,就需要拆分。例如,将用户管理类拆分为“用户数据访问层”(负责数据库CRUD)、“用户业务逻辑层”(负责权限校验、状态变更)、“用户视图层”(负责界面数据格式化)。拆分后,每个类只关注单一领域,代码的可读性、复用性都会显著提升。需要注意的是,拆分的粒度并非越细越好,应根据项目规模和变化频率灵活调整——小型项目中过度拆分可能增加代码复杂度,而大型项目则需要更严格的职责划分。
二、开闭原则:让代码“灵活生长”
(一)原则的核心价值
开闭原则(OpenClosedPrinciple,OCP)是设计模式中最核心的原则之一,其定义为:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。简单来说,当需求变更时,我们应该通过新增代码(如扩展类、实现新接口)来满足需求,而不是修改已有的、经过测试的代码。这一原则直接关系到系统的可扩展性——遵循开闭原则的系统,能以更低的风险应对需求变化。
(二)违反原则的现实困境
不遵循开闭原则的系统,往往会陷入“改代码如走雷区”的困境。例如,某电商系统最初只支持“满100减10”的促销活动,所有计算逻辑都写在一个calculateDiscount方法中。随着业务发展,需要增加“第二件半价”“会员折上折”等活动,开发者只能不断往这个方法里添加if-else判断。最终,这个方法变得长达数百行,每次新增活动都要仔细检查所有分支,稍有不慎就会导致旧活动计算错误。更严重的是,这种修改会破坏原有代码的稳定性——原本运行良好的“满减”逻辑可能因新增代码的错误而失效。
(三)实现开闭的关键手段
实现开闭原则的核心是抽象与多态。通过定义抽象接口或基类,将可变的部分封装成扩展点,让具体实现类通过继承或接口实现来扩展功能。例如,上述促销活动的例子中,可以定义一个Promotion接口,包含calculate方法。具体活动(如满减、第二件半价)分别实现这个接口。当需要新增活动时,只需编写新的实现类,而无需修改原有的计算逻辑。系统通过策略模式(一种设计模式)动态选择使用哪个Promotion实现类,从而实现对扩展开放、对修改关闭。此外,依赖注入、配置驱动等技术手段也能辅助实现开闭原则,例如通过配置文件指定使用哪种促销策略,避免硬编码。
三、里氏替换原则:让继承“名正言顺”
(一)原则的本质要求
里氏替换原则(LiskovSubstitutionPrinciple,LSP)由计算机科学家芭芭拉·利斯科夫提出,其核心表述是:所有引用基类的地方必须能透明地使用其子类的对象。简单来说,子类必须能够完全替代父类,而不破坏程序的正确性。这一原则是对继承关系的严格约束,确保继承不会导致逻辑混乱。
(二)违反原则的典型反例
最经典的反例是“正方形与长方形”问题。假设我们定义一个Rectangle(长方形)类,包含setWidth和setHeight方法,以及
您可能关注的文档
- 2025年价格鉴证师考试题库(附答案和详细解析)(1110).docx
- 2025年增强现实设计师考试题库(附答案和详细解析)(1208).docx
- 2025年婚姻家庭咨询师考试题库(附答案和详细解析)(1209).docx
- 2025年广播电视播音员主持人资格证考试题库(附答案和详细解析)(1209).docx
- 2025年注册噪声控制工程师考试题库(附答案和详细解析)(1107).docx
- 2025年注册噪声控制工程师考试题库(附答案和详细解析)(1204).docx
- 2025年注册工业设计师考试题库(附答案和详细解析)(1117).docx
- 2025年注册气象工程师考试题库(附答案和详细解析)(1209).docx
- 2025年电工资格证考试题库(附答案和详细解析)(1201).docx
- 2025年税务师职业资格考试考试题库(附答案和详细解析)(1210).docx
原创力文档


文档评论(0)