开放关闭原则
对扩展开放,对修改关闭。
即在添加功能的时候能够添加新的代码实现扩展(扩展软件实体的行为)而不需要修改原有的代码。
在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。
想要达到这样的效果,我们需要使用接口和抽象类。
依赖倒置原则
这个是开闭原则的基础,细节应该依赖抽象。针对接口编程,依赖于抽象而不依赖于具体。
最少知识原则(单一职责原则)
遵循单一职责原的优点有:
- 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
- 提高类的可读性,提高系统的可维护性;
- 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。
迪米特法则
一个对象应该对其他对象保持最少的了解。就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合。
接口隔离原则
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。
采用接口隔离原则对接口进行约束时,要注意以下几点:
- 接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
- 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
- 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
运用接口隔离原则,一定要适度,接口设计的过大或过小都不好。设计接口的时候,只有多花些时间去思考和筹划,才能准确地实践这一原则。
里氏替换原则(子类不能改变父类原有功能)
继承作为面向对象三大特性之一,在给程序设计带来巨大便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加了对象间的耦合性,如果一个类被其他的类所继承,则当这个类需要修改时,必须考虑到所有的子类,并且父类修改后,所有涉及到子类的功能都有可能会产生故障。
尽量使用合成/聚合的方式,而不是使用继承。
子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
设计总结
设计原则并不是编码要遵循的规则,而是设计代码时的心得总结,在了解设计原则的各种思路后,可以对你的设计提供规范,并不一定要遵循,只是如果使用以上原则可能会使你的代码更整洁,思路更清晰,扩展性更好。具体设计要根据自己的经验来取舍。
相关推荐
数据库设计原则总结 本文总结了数据库设计的重要原则,包括原始单据与实体之间的关系、主键与外键的设计、基本表的性质、范式标准、通俗地理解三个范式、要善于识别与正确处理多对多的关系、主键PK的取值方法等七个...
Java_面向对象设计原则总结 一 类的设计原则 1 依赖倒置原则-Dependency Inversion Principle (DIP) 2 里氏替换原则-Liskov Substitution Principle (LSP) 3 接口分隔原则-Interface Segregation Principle...
### OO设计原则总结 #### 什么是设计原则? 设计原则是一系列指导软件开发的基本准则,遵循这些原则可以帮助开发者构建出更加灵活、易于维护和扩展的软件系统。这些原则旨在解决常见的软件设计问题,如耦合度高、...
PCB设计原则总结 最好的总结 完整的总结+
### OO设计原则精要解析 #### 封装变化:Encapsulate what varies 在软件设计中,变化是不可避免的。封装变化原则强调将系统中易变的部分与不变的部分分离,通过封装变动点,使得系统其他部分不受其影响,从而保持...
六大设计原则是我们在项目实施的过程中要求项目管理者和开发者都必须要参考的原则。
对面向对象设计原则的总结,设计模式:“开-闭”原则,里氏代换原则、依赖倒转原则、合成/聚合复用原则、迪米特法则、接口隔离原则
面向对象设计原则总结 面向对象设计原则是软件设计中最重要的原则之一,它们是软件设计的基础和核心。面向对象设计原则的应用可以提高软件的开发效率、质量和可维护性。下面是七大面向对象设计原则的总结: 一、开...
本文档总结了积分系统开发的关键点和设计原则,为构建一个高效、稳定且可扩展的积分系统提供了指导。 首先,积分系统的核心在于它的规则模型,即如何根据用户的行为给予积分奖励。这包括收集用户在各产品中的动作...
设计是有原则和方法论的,鉴于网上各种文章和原则比较零碎,这次统一将交互设计的方法和理论汇总,不足之处也希望各位能够提出,一起补全。文章包括:格式塔心理学原则、尼尔森可用性原则、尼尔森F视觉模型、...
### Java设计原则16种详解 #### 一、一类的设计原则 ##### 1. 依赖倒置原则(Dependency Inversion Principle, DIP) **定义**:依赖倒置原则要求高层模块不应该依赖于低层模块,二者都应该依赖于抽象。同时,...
本文将详细解析SMT-PCB设计的一些基本原则,旨在帮助设计师优化设计流程,提升产品性能。 首先,SMT-PCB上元器件的布局策略至关重要。在回流焊接过程中,为避免元器件在焊接时发生漂移或“竖碑”现象,元器件的长轴...
软件设计的七大原则是软件设计的精髓所在,这七大原则分别是开闭原则、里氏代换原则、依赖倒置原则、接口隔离原则、合成/聚合复用原则、迪米特法则和抽象类原则。 一、 开闭原则(OCP) 开闭原则是指一个软件实体...
计算机专业毕业设计工作总结 本篇毕业设计工作总结报告主要讲述了作者在开发企业信息管理系统的设计和实现过程中所学到的知识和经验。 知识点1:系统开发理念 在开发企业信息管理系统时,作者秉持着严谨求实、开拓...
### 框架设计原则与Dubbo设计原理详解 #### 一、框架设计的重要性 在软件开发领域,框架设计的好坏直接影响着项目的可维护性、可扩展性和整体性能。一个优秀的设计不仅能够提升开发效率,还能减少后期维护成本。...
JAVA设计模式-原则和23种设计模式归纳总结 本资源主要介绍了JAVA设计模式的原则和23种设计模式的总结。设计模式是软件设计中的一种解决方案,能够使软件系统更加灵活、可维护和可扩展。本资源首先介绍了设计模式的...
这份名为“DOD启示录之程序设计经验原则总结”的文档,无疑为程序员们提供了一份宝贵的指南。以下是对其中一些关键原则的详细解读: 1. **单一职责原则**:每个类或模块应只有一个明确的责任,这有助于降低类之间的...
为了达到这样的设计目标,业界总结了一系列设计原则,这些原则被统称为“软件设计6原则”,它们分别是:单一责任原则(Single Responsibility Principle,简称SRP)、开放封闭原则(Open/Closed Principle,简称OCP...
总结来说,软件设计原则在嵌入式领域的应用,要求开发者在设计和实现时考虑系统的可维护性、可扩展性和复用性。通过合理应用开闭原则、单一职责原则、模块化、依赖倒置原则、设计模式以及代码结构的继承和抽象,可以...