六大原则之单一职责原则
1、什么是单一职责原则
单一职责比较官方的的定义是:应该有且仅有一个原因引起类的变更。说的通俗点其实就
像是工厂里的流水线一样,每个车间基本上只做一件事,所有车间组合起来就是一个生产流程。我
们写程序的时候也可以这样,将一个类的功能细化一下争取做到一个类只做一件事。
其实这样做大家可能会产生一个疑问:那不是把一个本来只要一个类就可以完成的是分散
到多各类去会让程序变的很复杂?其实利用一个类做多件事虽然可以减低程序的复杂度,但是他带
来的确实更大的两个问题:(1)、第一个问题是:对于一个比较复杂的程序,一个类的分工不明
确会造成在写程序时的混乱,传个参数可能要想半天这样就大大的影响了写程序的效率。(2)、
第二问题是:一个项目不可能会一次成型,后期会对他进行扩展或者是维护,类的分工不明确在这
时就会牵一发而动全身,本来做一个类的修改就行的,但是因为高耦合使得我们必须对多个类进行
修改。在商业上会增加成本,在学习上变的高效。
2、单一职责原则的特点
(1)、类的复杂性降低,实现什么功能都清晰明确的定义;
(2)、可读性提高,复杂性降低;
(3)、可读性提高,则是可维护性提高;
(4)、变更引起的风险降低,变更是必不可少的,若接口做好单一原则,对系统的扩展性
、维护性都有非常大的帮助;
3、有对比才有高下
举一个用户信息管理系统的例子,用两种不同的方式写的,一个用了单一职责原则,一个没用。
我们先看没用的那个:
public class UserInfo implements IUserInfo { private String userName; private String userID; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } //修改用户密码 public boolean changePassword(String oldPassword){ System.out.println("密码修改成功..."); return true; } //删除用户 public boolean deleteUser(){ System.out.println("删除用户成功..."); return true; } }
此类有设置用户名、设置ID、设置密码、增删改等功能。
整个用户管理系统的类图如:
户管理系统的类图1
大家其实可以清晰的看到,这个类总体上来说有两个功能,一个是储存用户信息;一个是对系统内的用户信息进行管理。这么写也能达到我的目的,但是在后期的修改上会有比较大的问题,假如我要在用户的信息中添加一项属性E-mail那我要对IUserInfo接口进行修改,又假如我要对在管理系统中添加一个查找的功能我又得去修改IUserInfo接口这样当这个用户管理系统复杂以后容易造成逻辑混乱。
其实只要我们对这个用户管理系统的程序进行一个小小的修善就能让它变的清晰明朗,我们又何乐而不为呢!以下是对此管理系统的一个小的改进类图如下:
用户管理系统的类图2
用户管理系统的类图2就基本上是每一个类的工作划分清晰了,其实这也就是单一职责的基本原理。
4、感悟
总的来说这些设计模式的原则,他是死的,主要是看我们怎么去运用它。这个单一职责的原则在每个类的设计中都可以用到。他就好像是公司的每个职位一样的,每个人都分配有自己的职责,你也志勇对你自己的任务负责就行了。
“过犹不及”这句话相信大家都听过,这句话放在这也是一个提醒。虽然单一职责的原则好,但是我有时候切不可将一个类划分的太过于细致,就是我们打电话的步骤:拨通电话、通话、挂断电话。这个我们不仅可能去每一步都去创建一个类,说是按照单一原则每一个步骤都进行划分,这样就属于钻了牛角尖的哪种。其实不管是我们的程序还是我们的生活中都要注意“过犹不及”这个词,万事万物都是有一个度的超过了这个度就容易钢过易折。有人肯定会问了:那么这个度我们应该怎么去把握呢?在这我只能:“呵呵”一声,然后告诉你这个完全要凭修为去把控。
5、单一职责的原则的优缺点分析
优点:
分工清晰明朗,做到引起变化的只有一个原因,出错时能快速锁定位置,也利于维护与扩展。
代码灵活。
缺点:
在比较小的项目中,会造成系统的复杂度增加的情况,类的增多会对运行效率有影响。
相关推荐
本文将深入探讨这六大原则中的第一个——单一职责原则(Single Responsibility Principle, SRP),并结合AcountYear.java这个文件名来解析该原则的应用。 单一职责原则指出,一个类或者一个模块应该只有一个引起它...
在软件设计领域,单一职责原则(Single Responsibility Principle,简称SRP)是面向对象设计的六大原则之一,由罗伯特·C·马丁(Robert C. Martin)在其著作《Clean Code》中提出。这个原则强调一个类或者模块应当...
详细介绍了设计模式六大原则,配有示例代码和图片,有开闭原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则等等。
六大原则分别是:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则和开闭原则。 1. 单一职责原则(Single Responsibility Principle) 单一职责原则是指一个类只负责一项职责。问题来源于类 T...
php 设计模式六大原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 word版
1. 单一职责原则(Single Responsibility Principle, SRP) 这个原则强调一个类或模块应该只有一个引起其变化的原因。如果一个类承担了多个职责,那么这些职责之间可能会相互影响,导致代码的脆弱性。例如,在动物...
1.单一职责原则: 不要存在多于一个导致类变更的原因 2.里氏替换法则:子类可以扩展父类的功能,但不能改变父类原有的功能 3.依赖倒置原则:面向接口编程 4.接口隔离原则: 客户端不应该依赖它不需要的接口;一个类对...
单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因,即一个类应该只有一个职责。这个原则鼓励将不同的功能分离到不同的类中,以减少类的复杂性,提高代码的可维护性。 ...
程序设计六大原则是软件开发中不可或缺的指导方针,它们旨在提高代码的可读性、可维护性和可扩展性。这六个原则包括单一职责原则(Single Responsibility Principle, SRP)、里氏替换原则(Liskov Substitution ...
以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, SRP)、开放封闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、依赖倒置原则...
设计模式六大原则是软件开发中不可或缺的指导方针,它们旨在提升代码的可维护性、可扩展性和可重用性。以下是对这些原则的详细解释: 1. 单一职责原则(Single Responsibility Principle, SRP): 这个原则强调一个...
1. 单一职责原则(Single Responsibility Principle, SRP) 这个原则指出,一个类或模块应该只有一个改变的原因。这意味着一个类应该只做一件事情,保持职责单一。例如,一个用户管理类只负责处理用户数据,而不是...
### 设计模式之六大原则详解 #### 一、单一职责原则 (SRP) **定义**: 单一职责原则(SRP, Single Responsibility Principle)指出,一个类应该仅有一个引起它变化的原因,换句话说,一个类只应负责一项职责。 **...
面向对象设计的六大基本原则是软件开发领域中非常重要的概念,这些原则旨在提高代码的质量、可维护性和可扩展性。在本篇文章中,我们将详细介绍这六个原则,并通过具体案例加深理解。 ### 一、单一职责原则 (SRP, ...
面向对象六大原则是软件开发中面向对象编程的重要理论基础,它们分别是单一职责原则(Single Responsibility Principle, SRP)、开闭原则(Open/Closed Principle, OCP)、里氏替换原则(Liskov Substitution ...
【六大设计原则】是软件开发中的核心指导原则,它们包括单一职责原则(Single Responsibility Principle,SRP)、开闭原则(Open Closed Principle,OCP)、里氏替换原则(Liskov Substitution Principle,LSP)、...
设计模式六大原则是软件开发中不可或缺的指导原则,它们旨在提高代码的可维护性、可扩展性和可重用性。以下是对这六个原则的详细解释: 1、单一职责原则(SRP) 单一职责原则指出,一个类或模块应只负责一项功能。...