开发设计原则

软件开发的设计原则

一.单一职责原则

定义:一个类只能有一个引起它变化的原因.通俗来说就是一个类只有一个职责。

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会影响到其他的职责,另外,把多个职责耦合在一起,也会影响复用性。

遵循单一职责原的优点有:

  1. 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
  2. 提高类的可读性,提高系统的可维护性;
  3. 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

二.里氏替换原则

定义:子类可以扩展父类的功能,但不能改变父类原有的功能,也就是说程序的行为是一样的。

它包含以下4层含义:

  1. 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
  2. 子类中可以增加自己特有的方法。
  3. 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  4. 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

三.依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。也就是提出的 “面向接口编程,而不是面向实现编程”。

四.接口隔离原则

定义:使用多个专门的接口比使用单一的总接口要好。也就是说不要让一个单一的接口承担过多的职责,而应把每个职责分离到多个专门的接口中,进行接口分离。过于臃肿的接口是对接口的一种污染。

  1. 接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
  2. 为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
  3. 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。

五.合成复用原则

定义:在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分。新对象通过向这些对象的委派达到复用已用功能的目的。简单地说,就是要尽量使用合成/聚合,尽量不要使用继承。

要使用好合成复用原则,首先需要区分"Has—A"和“Is—A”的关系。

“Is—A”是指一个类是另一个类的“一种”,是属于的关系,而“Has—A”则不同,它表示某一个角色具有某一项责任。导致错误的使用继承而不是聚合的常见的原因是错误地把“Has—A”当成“Is—A”。例如:雇员、经理、学生描述的是一种角色,不应该把其与人的结构混淆。

六.迪米特法则

定义:一个对象应该对其他对象保持最少的了解。

问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。

解决方案:尽量降低类与类之间的耦合。

七.开闭原则

定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。

解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。

原文地址:https://www.cnblogs.com/LTEF/p/10122503.html

时间: 2024-11-05 15:53:46

开发设计原则的相关文章

软件开发设计原则

一.开闭原则 对扩展 开放 对修改关闭 1.多使用继承的方式去修改原有行为,而不是直接修改,在子类中定义拓展的方法 2.多用多态的形式,去复用(父类用virtual定义多态方法,子类用override重写方法,实例化指向子类的父类对象,调用方法就可以实现多态) 3.一个变量 我们不要直接去修改 而是用方法的形式 二.单一原则 只用一个引起变化原因,过多职责 耦合性降低 也会影响复用性 1.类.方法单一 只做一类事情 2.接口单一原则 interface(用多继承的方法继承多个接口,将接口内部方法

面向对象编程的软件设计原则

在開始Android软件实际APP開始之前,我们须要对面向对象设计原则及设计模式做一个初步的了解.才干在以后的实战过程中,少走弯路.使我们的软件开发生涯感觉到快乐.轻松.好了,废话少说,咱们今天给大家一起探讨一下软OOP中的软件开发设计原则.这些东东都是OOP的设计精髓,他们蕴藏着前辈留下的产物.眼下.软件设计最基本原则有下面几种(总共同拥有11种):单一职责原则.开放封闭原则.依赖倒置原则.接口隔离原则和里氏替换(Liskov替换)原则 单一职责原则 就是一个类值做一件事情.引起它发生变化的仅

*javascript开发的设计原则和设计模式

 设计原则(7种):   之所以有这么多的原则来指导我们进行程序的设计和开发,是因为我们的程序存在未知的改变.为了以最低的代价拥抱这种未知的变化,前辈们给我们总结了这么多原则. ①YAGNI原则you aren't gonna need it 不要写不需要的代码 ②KISS原则keep it simple and stupid代码保持简介和具有表现力语义话的标记.注释.变量或者方法的命名.减少嵌套 ③DRY原则Don't Repeat Yourself模块的封装提高代码的复用率 降低测试难度 方

APP开发设计应以人为本!浅谈APP交互设计原则

为什么APP开发设计需要原则?设计原则其实就是对一些设计过程中基于人类的认知规律对设计做出的一些指导性原则,并且对已经成为行业共识的设计经验做个总结,用来指导设计师界定问题.提高效率. 先就APP开发设计 http://www.czwew.com 常州紫竹云科技产品经理分享交互设计的时候最为大家所认可的几条设计原则:可学习性.一致性.简洁性.流畅性.及时反馈.除了这么六个?还有其他的吗?你放心,如果需要还有更多. 一.经常用的设计原则有哪些? 1.可学习性   目标用户在已有的知识和经验基础上,

【游戏开发】浅谈游戏开发中常见的设计原则

俗话说得好:“设计模式,常读常新~”.的确,每读一遍设计模式都会有些新的体会和收获.马三不才,才读了两遍设计模式(还有一遍是在学校学的),属于菜鸟级别的.这次准备把阅读设计模式的想法记录下来,并且把设计模式应用在Unity游戏开发上,做些小案例. 什么是设计模式 每一种模式都在说明某种一再出现的问题,并描述解决方法的核心,之后让你能够举一反三,从而解决数个类似的问题.每一种设计模式除了按照“面向对象的设计原则”加以分析设计之外,还满足:”解决一再出现的问题“.”解决问题的方案和问题核心的关键点“

项目开发中自定义字段设计原则

在开发系统过程中,做到自定义字段策略设置,目前这种功能是很多系统的标准配置,这样子可以简化后续增加字段的难度,并对自定义字段做管理. 自定义字段功能要注意到以下几点: 1.批量规划好要自定义字段的数据表.2.对自定义字段存放的表字典表做设计3.对自定义字段做不同的属性设计4.自定义字段的扩展设计 1.明确是哪个表需要自定义字段.如果是开发一套易用的系统,做开发的时候对用到的主表做统一的自定义字段设计.这样子方便在以后的开发应用中直接操作自定义功能就能增加字段.很多程序员在初写程序的时候,增加字段

面向对象开发中的七大设计原则和23种设计模式

一.面向对象开发中的七大设计原则 软件开发中最核心的思想就是"高内聚,低耦合",主要的目的也是为了方便后期的维护和变更.下面的设计原则也是依靠这个核心思想衍生出来的. 1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:单一职责原则想表达的核心思想就是"高内聚",一个模块只完成一项功能.在面向对象设计中,一个类只应该负责一项职责,如果同时承担太多职责,就等于把这些职责耦合在了一起. 后面很可能因为某项职责的变更而导致其他职责的削弱或者

适用于Java开发人员的SOLID设计原则简介

看看这篇针对Java开发人员的SOLID设计原则简介.抽丝剥茧,细说架构那些事——[优锐课] 当你刚接触软件工程时,这些原理和设计模式不容易理解或习惯.我们都遇到了问题,很难理解SOLID + DP的思想,甚至很难正确实施它们.确实,“为什么要SOLID?”的整个概念,以及如何实施设计模式,这需要时间和大量实践. 我可以说实话,关于SOLID设计模式以及TDD等其他领域,从本质上讲,它们很难教.很难以正确的方式将所有这些知识和信息传授给年轻人. 让SOLID 变得容易 在本文中,我将以尽可能简单

设计模式——设计模式与设计原则

设计模式--设计模式与设计原则 一.设计模式  1.设计模式简介 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石. 模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再