设计模式所遵循原则

设计模式根据现有书籍描述,多达200多种,但往往使用时并没有完全根据书本的描述去实现,关注设计模式的背后我们可以更多的关注一切设计模式都遵循的原则:(简单归纳一下几点)

 

1.代码模块化

 

2.oop(面向对象)

 

3.mvc(modal-view-control)

 

4.单一职责原则(SRP,singel responsibility)

 

5.开放-封闭原则(OCP,Open Closed Principle)

 

6.依赖倒置原则(DIP,Dependency Inversion Principle)

 

7.里氏代换原则(LSP,Liskov Substitution Principle)

 

8.最少知识原则(LKP,Least Knowledge Principle)

<think>好的,我现在需要回答用户关于软件设计模式基本原则和规范的问题。首先,用户提到他们想了解设计模式所遵循的原则,并引用了三个参考内容。我需要仔细分析这些引用,提取关键信息,并结合我的知识来组织回答。首先,引用[2]详细介绍了软件设计模式的分类,包括创建型、结构型和行为型模式,并提到七大设计原则。引用[3]则列出了七大原则的具体名称,如单一职责、开放封闭等,还提供了代码例子。引用[1]虽然主要讲解释器模式,但提到了设计模式的七大原则,可能与用户的问题相关。用户的问题集中在设计模式的基本原则和规范上,因此我需要重点阐述七大原则,每个原则的定义、目的以及实际应用例子。同时,需要引用提供的资料来支持回答,比如引用[2]中提到设计模式是为了可重用、易理解、可靠和重用性,引用[3]中的七大原则名称和例子。 接下来,我需要确保回答结构清晰,分点解释每个原则,可能还需要比较不同原则之间的区别或联系。例如,单一职责原则和接口隔离原则都涉及职责划分,但侧重点不同。此外,可能需要提到这些原则如何共同作用,帮助设计出高质量的软件系统。 另外,用户要求生成相关问题,我需要根据回答内容提出相关问题,比如关于某个原则的具体应用,或者设计模式如何遵循这些原则的例子。最后,检查是否符合系统级指令:使用正确的中文,数学公式格式正确(虽然这个问题可能不涉及数学公式,但需注意),引用标识正确添加。例如,在提到七大原则时,引用[2]和[3]中的相关内容,并在末尾添加引用标识。现在组织回答的结构:1.引言:设计模式的目的和七大原则的重要性,引用[2]中的内容。 2.分点介绍七大原则,每个原则的定义、目的、例子,引用[3]中的例子和原则名称。3.总结这些原则如何共同促进良好的设计。 4.生成相关问题,如具体原则的应用、原则之间的关系、实际案例等。 需要确保每个原则的解释清晰,例子简明,引用正确。例如,单一职责原则可以引用[3]中的代码例子,说明一个类只负责一个功能。开放封闭原则提到通过扩展而非修改来实现变化,可能引用策略模式作为例子。可能还需要注意术语的一致性,比如“开放封闭”有时也称为“开闭原则”,需统一使用用户引用中的名称。引用[3]中使用的名称是“开放封闭原则”,所以保持一致。 在回答过程中,要避免技术错误,例如正确区分原则和模式,原则是指导方针,模式是具体解决方案。确保每个原则的解释准确,例如里氏替换原则强调子类替换父类不影响程序正确性,依赖倒置原则涉及高层模块不依赖低层细节等。最后,生成的相关问题需要与设计模式的原则相关,可能包括如何应用某个原则,原则之间的比较,或者实际项目中如何遵循这些原则的例子。</think>软件设计模式的基本原则和规范主要围绕提高代码质量、可维护性和扩展性展开,其中七大设计原则是核心指导方针[^2][^3]。 ### 一、七大设计原则详解 1. **单一职责原则 (SRP)** - **定义**:一个类只负责一个功能领域中的相应职责 - **示例**:用户管理模块中,将用户数据存储和用户验证拆分为两个独立类[^3] - **优势**:降低类复杂度,提高可读性,减少修改引发的风险 2. **开放封闭原则 (OCP)** - **核心**:对扩展开放,对修改关闭 - **实现方式**:通过抽象化(接口/抽象类)和继承机制 - **典型应用**:策略模式中不同算法实现同一接口[^2] 3. **里氏替换原则 (LSP)** - **关键要求**:子类必须能够替换父类且不影响程序正确性 - **违反案例**:子类重写父类方法导致异常抛出范围扩大 - **设计意义**:保证继承关系的正确性[^3] 4. **依赖倒置原则 (DIP)** - **层次关系**:高层模块不依赖低层模块,二者都依赖抽象 - **实现模式**:工厂方法模式通过抽象工厂创建对象[^2] $$ \text{高层} \rightarrow \text{抽象} \leftarrow \text{低层} $$ 5. **接口隔离原则 (ISP)** - **核心思想**:客户端不应依赖不需要的接口 - **与SRP区别**:SRP关注职责划分,ISP关注接口粒度控制 - **实践方法**:将臃肿接口拆分为多个特定功能接口 6. **迪米特法则 (LoD)** - **别称**:最少知识原则 - **通信规则**:对象只与直接朋友通信(成员变量、方法参数、返回值) - **应用场景**:外观模式封装子系统交互[^2] 7. **合成复用原则 (CRP)** - **优先级别**:组合/聚合 > 继承 - **优势比较**:降低耦合度,提高灵活性 - **典型示例**:使用装饰器模式动态添加功能[^2] ### 二、原则间的协同作用 这些原则共同构成面向对象设计的黄金准则,例如: - 通过**依赖倒置**实现**开放封闭** - 运用**接口隔离**支持**单一职责** - **合成复用**与**里氏替换**共同保障继承体系的合理性 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值