`
wlj12368745
  • 浏览: 9202 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

六大原则之单一职责原则

 
阅读更多

                                                      六大原则之单一职责原则

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、单一职责的原则的优缺点分析

       优点:

           分工清晰明朗,做到引起变化的只有一个原因,出错时能快速锁定位置,也利于维护与扩展。

       代码灵活。    

       缺点:

           在比较小的项目中,会造成系统的复杂度增加的情况,类的增多会对运行效率有影响。 

       

  • 大小: 4.4 KB
  • 大小: 8.8 KB
分享到:
评论

相关推荐

    设计模式六大原则(1):单一职责原则

    NULL 博文链接:https://lijie-insist.iteye.com/blog/2190970

    设计模式之六大原则详解,Markdown笔记

    详细介绍了设计模式六大原则,配有示例代码和图片,有开闭原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则等等。

    设计模式六大原则

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大原则...

    php 设计模式六大原则

    php 设计模式六大原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 word版

    JAVA设计模式六大原则详细讲解(面向对象语言通用)

    1.单一职责原则: 不要存在多于一个导致类变更的原因 2.里氏替换法则:子类可以扩展父类的功能,但不能改变父类原有的功能 3.依赖倒置原则:面向接口编程 4.接口隔离原则: 客户端不应该依赖它不需要的接口;一个类对...

    设计模式六大原则.doc

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大原则...

    JAVA六大原则代码.zip

    单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因,即一个类应该只有一个职责。这个原则鼓励将不同的功能分离到不同的类中,以减少类的复杂性,提高代码的可维护性。 ...

    设计模式六大原则 设计模式详解

    详细介绍设计模式的六大原则,有不足之处希望大家多指教。参考《设计模式之禅》

    设计模式6大原则.doc

    设计模式六大原则:单一职责模式、开闭原则、接口隔离原则、里氏替换原则、依赖倒置原则、迪米特法则

    浅谈C#六大设计原则

    这六种原则分别为单一职责原则、接口隔离原则、里氏替换原则、迪米特法则、依赖倒置原则、开闭原则。 单一职责原则 单一职责原则(SRP:Single responsibility principle),规定一个类中应该只有一个原因引起类的...

    程序设计六大原则及代码样例

    本文档非常详细的介绍了程序设计六大原则的定义,问题由来,解决方案及代码样例。

    24种设计模式与6大设计原则

    策略模式[STRATEGY PATTERN] 代理模式[PROXY PATTERN] 单例模式[SINGLETON PATTERN] 多例模式[MULTITION PATTERN] ...六大设计原则:单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则,开闭原则。

    Beatles9527#StudyNotes#_1设计模式六大原则1

    1. 单一职责原则 2. 依赖倒置原则 3. 迪米特法则 4. 开放-封闭原则 5. 里氏替换原则(了解) 6. 接口隔离原则(了解)

    IOS设计模式

    1、 IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle) 定义  就一个类而言,应该仅有一个引起它变化的原因。 定义解读  这是六大原则中最简单的一种,通俗点说,就是不存在多个...

    设计模式总结

    单一职责原则(Single Responsibility Principle,简称SRP) 有且仅有一个原因引起类的变更。 里氏替换原则(Liskov Substitution Principle,LSP) 只要父类出现的地方都可以用子类替换。 依赖倒置原则...

    24个设计模式与6大设计原则

    26.1 单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】 290 26.2 里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】 297 26.3 依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】 309 26.4 接口隔离原则...

    敏捷软件开发:原则、模式与实践.pdf

    第8章 单一职责原则(SRP) 第9章 开放—封闭原则(OCP) 第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 ...

Global site tag (gtag.js) - Google Analytics