`

基本设计原则

阅读更多

 六大基本设计原则:

1、单一职责原则

2、里氏替换原则

3、依赖倒置原则

4、接口隔离原则

5、迪米特原则

6、开闭原则

 

 

单一职责原则(Srp

定义:应该 有且仅有一个原因引起类的变更。即单一职责原则要求一个接口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,他就负责一件事情。

职责是很难定义的一个概念 ,我们把握一个度,就是合理的划分职责,不能耦合度 太强,也不能拆分的类太多。(原则是死的,人是活的)

好处:

1、类的复杂性降低,实现什么职责都有清晰明确的定义;

2、可读性提高;

3、可维护性提高;

4、变更引起的风险降低,变更是必不可少的的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

里氏替换原则

定义:只要父类出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本不需要 知道父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。

 

在面向对象的语言中,继承是必不可少;

继承的优点为:

1、代码共享,减少创建的类的工作量,每个子类都拥有父类的方法和属性;

2、提高代码的重用性;

3、子类可以形似父类,但又异于父类;

4、提高代码的可扩展性;

5、提高产品或者项目的开放性

缺点:

1、继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法;

2、降低了代码的灵活性。子类 必须拥有父类的属性和方法,让子类的自由世界中多了些约束;

3、增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改 ,而且在缺乏规范的环境下,这种修改可能让大段2的代码需要重构;

依赖倒置原则(大项目必须)

定义:

       1、高层模块不应该依赖低级模块,两者都应该依赖其抽象;

       2、抽象不应该依赖细节;

       3、细节应该依赖抽象;

高层模块和低级模块的定义:每一个逻辑的实现都是由原子逻辑组成的,不可分割的 原子逻辑就是低级模块,原子逻辑再组装就是高级模板;

抽象:指接口或抽象类,两者都是不能直接被实例化的;

细节:细节就是实现类,实现接口或继承抽象类而产生的类就是细节,其特点就是可以被实例化,也就是可以加上一个关键字 new产生的 一个对象。

 

依赖倒置原则的表现:

1、模块间的依赖 通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系就是通过接口或者 抽象类产生的 ;

2、抽象或实现类不依赖于实现类;

3、实现类依赖接口 或抽象类;

 

也就是面向接口编程;

 

依赖倒置的本质就是通过抽象(接口或抽象类),使各个类或模块实现彼此独立,不相互影响,实现真正的松耦合;

在项目中的体现:

1、每个类尽量都有接口或实现类 ,或者抽象类或接口两者都具备;

2、变量的表面类型尽量是接口或抽象类;

3、任何类都不应该从具体类派生;

4、尽量不要覆写基类的方法 ;

5、即合理实体化原则使用;

接口隔离原则

接口类型:

1、实例接口:在 Java中声明一个类,然后用new关键字产生一个实例,,他是对一个类型的事物的描述,这是一种接口;例如你定义了一个Person类,然后使用Person zhangsan = new Person();产生一个实例,这里Person类就是zhangsan 的接口;

 

2、类接口:Java中经常使用的interface关键字定义的接口;

 

隔离定义:

1、客户端不应该依赖它不需要的接口;依赖它需要的接口客户端需要什么接口就 提供什么接口,把不要的接口剔除掉,这就需要对接口进行细化,保证其纯洁性;

2、类间的依赖关系应该建立在最小的接口上;它是要求接口最小 ,也是要求接口细化,接口纯洁;

即建立单一接口,不要建立臃肿庞大的接口,通俗来讲就是接口尽量细化,同时接口中的方法尽量的少;单一职责要求的是类和接口职责单一,注重的是职责,这是业务逻辑的划分。而接口隔离原则要求的是接口的方法尽量的少,注意区分。

 

最佳实践:

       接口隔离原则是对接口的定义,同时也是对类的定义,接口 和类尽量使用原子接口和类;

1、一个接口只服务于一个子模块或业务逻辑;

2、通过业务逻辑压缩接口中的public方法

3、已经被 污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理;

4、了解环境,拒绝盲从不要盲目的模仿网上的代码,要深入了解逻辑,设计出最好的接口。

迪米特法则

定义:一个对象应该对其他对象 有最少的了解,通俗来讲,一个类应该对自己需要耦合或 调用的类知道的最少,被耦合或调用的类的内部是如何复杂和我没有关系;

1、只与直接的朋友交流:

 

 

迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了之后 ,类的复用率才可以提高。

 

开闭原则    

定义:

一个软件实体如类、模块和函数应该对扩展开放,对修改关闭;(一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化)

 

软件实体包括:

1、项目或软件产品中按照一定的逻辑规则划分的模块

2、抽象和类

3、方法

 

 

分享到:
评论

相关推荐

    面向对象七大基本设计原则.pdf

    面向对象七大基本设计原则通常是指SOLID原则,它是一组面向对象设计的指导原则,旨在使软件更加可维护和可扩展。SOLID由以下五个原则组成: 1. 单一职责原则(Single Responsibility Principle, SRP):一个类应该...

    电子测量中的计量类光电仪器的基本设计原则

    在光电计量仪器设计学的发展过程中,总结并形成了一系列基本设计原则。正确掌握这些原则,将有助于所设计的仪器达到上述的质量指标。  1.2.1 阿贝(Abbe)原则  1.定义  1890年阿贝本人的叙述是:长度测量...

    OOP的基本设计原则1

    面向对象编程(OOP)是现代软件开发中的基础,遵循一系列设计原则可以帮助我们构建更加稳定、可维护的系统。SOLID原则是OOP设计中最重要的五个原则,它们分别是: 1. 开闭原则(Open-Closed Principle,OCP):一个...

    设计的基本原则导学案.doc

    4. **额外考虑的原则**:除了教科书中的基本设计原则,还有其他因素可能影响设计,如文化背景、社会需求、用户行为习惯等。在设计台灯时,可能还需要考虑台灯的便携性、安全性(防止触电)和耐用性等因素。 5. **...

    计量类光电仪器的基本设计原则

    在光电计量仪器设计学的发展过程中,总结并形成了一系列基本设计原则。正确掌握这些原则,将有助于所设计的仪器达到上述的质量指标。  1.2.1 阿贝(Abbe)原则  1.定义  1890年阿贝本人的叙述是:长度测量...

    混凝土结构设计的基本原则.ppt

    在混凝土结构设计中,理解和掌握基本设计原则至关重要。 首先,混凝土结构定义与分类主要依据结构的空间位置和力的传递关系。结构可以分为水平承重结构、竖向承重结构和地下承重结构,它们各自承担不同的荷载和应力...

    数据采集系统设计原则与基本方法

    数据采集系统设计原则与基本方法 数据采集系统设计原则与基本方法是数据采集系统设计的基础,掌握这些原则和方法是设计高质量的数据采集系统的关键。本文将对数据采集系统设计的基本原则和方法进行详细的解释。 一...

    【习题解答】_基于运算放大器和模拟集成电路的电路设计_第4版.pdf

    * 电路设计的基本设计原则 * 电路设计的设计步骤 * 电路设计的常见问题和解决方法 知识点7:电路设计的仿真和验证 * 电路设计的仿真方法 * 电路设计的验证方法 * 电路设计的仿真和验证工具 知识点8:电路设计的...

    软件开发基本原则.rar

    5. **SOLID原则**:这是面向对象编程中的五个基本设计原则,包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则有助于创建灵活、可扩展的软件...

    机械设计基本原则

    在进行机械设计时,遵循一系列基本原则至关重要,这些原则是设计师们智慧的结晶,也是确保设计成功的关键。 首先,以市场需求为导向的原则是机械设计的出发点。在设计之初,设计师必须深入理解目标市场的需求,分析...

    Protel硬件开发PCB设计的3W和20H原则及五五规则

    首先,3W规则是关于线与线之间距离的基本设计原则。在PCB布线中,为了避免线间串扰,确保信号传输的稳定性,相邻走线之间的距离应保持至少3倍于线宽。这种设计方法能够减少线间电场的相互干扰,当线中心间距不少于3...

    《光检基本原则》PPT课件.ppt

    《光检基本原则》是关于光电检测系统设计的重要指导文件,主要涵盖了九个基本设计原则,这些原则对于确保光电系统的性能、精度和效率至关重要。以下是这些原则的详细解释: 1. 匹配原则: - 光电匹配:设计时需...

    新ZigBee架构及设计原则.pptx

    Control4创新的将家庭娱乐和自动化进行整合,通过这套强大的系统,可以让您充分享受便捷、舒适、安全的生活方式,提高生活质量。

    面向对象设计的基本原则

    本篇文章将详细探讨面向对象设计的基本原则,这些原则对于创建可维护、可扩展且易于理解的代码至关重要。 1. **单一职责原则 (Single Responsibility Principle, SRP)** - 这个原则指出,一个类应该只有一个引起它...

    数据库索引设计原则.

    数据库索引设计原则的基本原则是确保数据库的查询效率和性能。为此,需要遵守以下几点原则: 1.1 基本原则:索引设计应遵守基本原则,即索引列的选择、索引类型的选择、索引的维护等。 1.2 主关键字的约束:主...

    23种 设计模式---面向对象的基本原则

    在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计模式以及面向对象的基本原则。 面向对象的基本原则主要包括: 1. 单一职责原则(Single Responsibility ...

    PLC控制系统设计的基本原则

    由于控制系统直接关系到生产效率和产品质量,其设计原则至关重要。以下是对PLC控制系统设计原则的详细解读: 首先,PLC控制系统设计的首要原则是最大限度地满足被控对象的控制要求。这需要设计人员在设计前充分了解...

    面向对象的六大基本原则.md

    介绍面向对象(OOP)的六大基本设计原则,使用markdown格式编写,使用浏览器即可查看! 让我们一起new一个对象吧~O(∩_∩)O

    信息化系统建设-UI设计规范.pdf

    本文档详尽地阐述了设计规范的多个方面,包括基本设计原则、布局、字体、颜色、图标、换肤、控件标准、交互规范以及界面架构等多个部分。下面将逐一介绍这些知识点。 首先,基本设计原则涉及简约明确、一致性和操作...

    OOD设计基本原则 面向对象设计必备

    OOD 设计基本原则包括 OCP 原则、里氏替换原则、依赖倒置原则、接口隔离原则、聚合与继承原则、单一职责原则、Separation of concerns Principle 和 Pareto Principle 等。 OCP 原则(Open-Closed Principle)是 ...

Global site tag (gtag.js) - Google Analytics