面向对象的基本原则(一)------单一职能原则

一、定义

单一职责原则(SRP),英文全称是Single Responsibility Principle,该原则的思想是:系统中的每一个类都应该只有一个单独的职责,而所有类所关注的就是自身职责的完成。

SRP中,把职责定义为“变化的原因”。如果你能想到多个原因去改变一个类,那么这个类就具有多于一个的职责。

二、好处

其实单一职责原则的意思就是开发人员经常说的“高内聚、低耦合”。也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。

如果一个类有一个以上的职责,这些职责就耦合在了一起,当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性,我们可能只需要复用该类的某一个职责,但这个职责跟其它职责耦合在了一起,很难分离出来。

单一职责原则简单而直观,但在实际应用中很难实现。SRP中,把职责定义为“变化的原因”,这里说的“变化的原因”,只有实际发生时才有意义。可能预测到
会有多个原因引起这个类的变化,但rug仅仅是预测,并没有真的发生,这个类仍可看做具有单一职责,不需要分离职责。如果分离,会带来不必要的复杂性。

单一职责原则的尺度如何掌握,是不是应该百分之百的做到呢?原则还是需求导向,即需求决定设计。实际操作中,类设计时的职责划分和类粒度的确定不是一件很简单的事情,需要设计者经验的积累和对需求的仔细分析。

三、总结

众所周知,面向对象编程语言可以提高程序的封装性、复用性、可维护性,但仅仅是“可以”。能不能实现OOPL的这些优点,要看具体怎么做。如果一个类的代码非常混乱,各种功能的代码都混在一起,封装性、复用性、可维护性无从谈起。

SRP是所有原则中最简单的,也是最基本的一个。运用这个原则,可以提高类的内聚性,有助于充分发挥面向对象编程语言的优势。

面向对象的基本原则(一)------单一职能原则

时间: 2024-11-07 16:03:21

面向对象的基本原则(一)------单一职能原则的相关文章

设计原则之单一职能原则

设计原则之单一职能原则 动机:         一个职能被考虑成为只有唯一理由去改变,如果我们有两个理由去改变一个类,我们要把这两个功能分成两个类.每个类只控制一个职能,如果在未来有一天我们做某个改变,去改变对应的类就行了. 目标:        一个类应该只有一个被改的理由. Bad Example:缺点:     1.新增一个新的协议将会带来一个新需求,要为每种域序列化内容.     2.内容不一定是string,也会有html等其他形式. // single responsibility 

学习设计模式 - 六大基本原则之单一职责原则

设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principl

面向对象的三大特征、五大原则

1.面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么.- 继承:继承是从已有类得到继承信息创建新类的过程.提供继承信息的类被称为父类(超类.基类):得到继承信息的类被称为子类(派生类).继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的<Java与模式>或<设计模式精

面向对象的基本原则

五个基本原则: 单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化.单一职责原则可以看做是低耦合.高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因. 开放封闭原则(Open-Closed principle):软件实体应该是可扩展的,而不可修改的.也就是,对扩展开放,对修改封闭的. 里氏替换原则(Liskov-Substituion Principle):子类必须能够替换其基类.这一

面向对象编程6大设计原则:单一职责原则

单一职责原则(Single  Responsibility Principle)简称SRP原则. 定义 应该有且仅有一个原因引起类的变更. 优点 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多: 提高类的可读性,提高系统的可维护性: 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响. 说明 单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则: 单一职责原则要根据项目的实际情

面向对象五大原则之一:单一职责原则(自我理解)

http://www.cnblogs.com/seacryfly/archive/2011/12/29/2305965.html 只有类对应的(唯一)职责(需求)的变更才会引起代码的重构. The single responsibility principle states that every module or class should have responsibility over a single part of the functionality provided by the so

面向对象设计原则一:单一职责原则(SRP)

单一职责原则(SRP) 定义:系统中的每一个类都应该只有一个职责. 好处:高内聚.低耦合. 解释说明: 单一职责也就是说我们应该让一个类或一个对象只做一件事情,每个类所要关注的就是自己要完成的职责是什么,能够引起这个类变化的原因也应该只有一个,这也是后面提到的所有的设计模式都会遵守的一个原则. 高内聚:先按照面向对象的封装特性来理解,封装也就是我们说的,应该把一个类或对象它所有相关的属性.方法.行为放到一起,放到一个类中,这样就实现了一个封装的特性.那么内聚,就是一个类里面应该包含它所有的属性和

面向对象的基本原则(四)----依赖倒置原则

描述:A .高层模块不应该依赖于低层模块.二者都应该依赖于抽象.B .抽象不应该依赖于细节.细节应该依赖于抽象. 应 用:要依赖抽象,不要依赖于具体.即针对接口编程,不要针对实现编程.针对接口编程的意思是,应当使用接口和抽象类进行变量的类型声明.参量的类型声明, 方法的返还类型声明,以及数据类型的转换等.不要针对实现编程的意思就是说,不应当使用具体类进行变量的类型声明.参量的类型声明,方法的返还类型声明, 以及数据类型的转换等. 结论:DIP虽然强大,但却不易实现,因为依赖倒转的缘故,对象的创建

面向对象的基本原则(三)------里氏替代原则

一.定义 里氏替代原则(LSP),英文全称是Liskov Substitution Principle,Liskov是该替代原则的提出者.该原则的思想是:在任何父类出现的地方都可以用它的子类来替代,而不影响功能. 其实里氏替代原则的意思就是:同一个继承体系中的对象应该有共同的行为特征.里氏代换原则关注的是怎样良好地使用继承,也就是说不要滥用继承,它是继承复用的基石. 二.好处 里氏替代原则是对开闭原则的扩展.如果要采用开闭原则必然用到抽象和多态,而这又离不开继承,里氏替代原则就是对如何良好继承提