文档章节

设计模式---->单一职责原则

小强斋太
 小强斋太
发布于 2016/11/09 20:08
字数 581
阅读 0
收藏 0

单一职责原则【Single Responsibility Principle】

1、单一职责原则

单一职责原则:应该有且仅有一个原因引起类的变更

There should never be more than one reason for a class to change.

2、使用单一职责原则的好处

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

2. 可读性提高,复杂性降低,那当然可读性提高了;

3. 可维护性提高,那当然了,可读性提高,那当然更容易维护了;

4. 变更引起的风险降低,变更是必不可少的,接口的单一职责做的好的话,一个接口修改只对相应的实现类有影响,与其他的接口无影响,这个是对项目有非常大的帮助。

3、应用

3.1、接口

对于接口,我们在设计的时候一定要做到单一,

用户的属性(Properties)和用户的行为(Behavior)没有分开,应该把用户的信息抽取成一个业务对象(BussinessObject,简称BO),把行为抽取成另外一个接口中,

重新拆封成两个接口,IUserBO负责用户的属性;IUserBiz负责用户的行为,完成用户的信息的维护和变更

3.2、类

但是对于实现类就需要多方面考虑了,生搬硬套单一职责原则会引起类的剧增,给维护带来非常多的麻烦;而且过分的细分类的职责也为人为的制造系统的复杂性,本来一个类可以实现的行为非要拆成两个,然后使用聚合或组合的方式再耦合在一起,这个是人为制造了系统的复杂性

3.3、方法

单一职责使用于接口、类,同时也使用方法

在IUserManager中定义了一个方法叫changeUser,根据传递的type不同,把可变长度参数changeOptions修改到userBo这个对象上,并调用持久层的方法保存到数据库中。

缺点:方法职责不清晰,不单一

你要修改用户名称,就调用changeUserName方法,你要修改家庭地址就调用changeHomeAddress,你要修改单位单户就调用changeOfficeTel方法,每个方法的职责就非常清晰,

本文转载自:http://www.cnblogs.com/xqzt/archive/2013/05/22/5637077.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0
迈向大牛的重要一步——掌握设计模式

IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键...

一枚Sir
2015/04/10
0
0
android与模式:设计原则

在谈设计模式之前,如果不谈设计原则,我认为是无根之浮萍。 为什么这么说,为什么我们要学设计模式,为什么前人将这些东西抽象和总结出来?这就是要了解设计原则的必要性,开始学的时候,可...

今幕明
2014/03/06
0
0
设计模式(Hibernate)

1、概述 2、面向对象设计原则 1)单一职责原则 2)开闭原则 3)里氏替换原则 4)依赖倒置原则 5)接口隔离原则 6)迪米特原则 7)组合/聚合复用原则 3、设计模式 4、设计模式分类 5、简单工厂...

学而时习之
2015/04/21
0
0
web前端进阶之js设计模式篇——上

设计模式,从设计到模式 设计:设计原则(统一指导思想) 模式:通过概念总结出的一些模板,可以效仿的固定式的东西(根据指导思想结合开发经验,总结出固定的样式或模板) 按类型分 创建型(...

jia林
08/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Memcached启动参数详解

memcached -d -m 1024 -l 192.168.100.101 -p 11211 -P /tmp/memcached.pid -c 1024 -f 1.25 -n 80 -t 16 运行参数描述 -d:以守护(daemon)进程方式启动; -u:是运行Memcache的用户,例如 ......

月下狼
27分钟前
0
0
xgboost-kaggle

https://www.kaggle.com/dansbecker/xgboost This tutorial is part of the Learn Machine Learning series. In this step, you will learn how to build and optimize models with the powe......

tantexian
27分钟前
0
0
nginx学习八 代理服务

最常用的语法 proxy_pass Syntax: proxy_pass URL;Default: --Context:location.if in location,limit_exception 反向代理 例:/etc/nginx/conf.d/default.conf 反向代理(代理服务端)......

Romanceling
35分钟前
0
0
npm ERR! Unexpected end of JSON ...

npm install 报错: npm ERR! Unexpected end of JSON input while parsing near '..."^2.8.14"},"_hasShrin' npm ERR! A complete log of this run can be found in: ... 打开终端 命令: 第......

大_侠
39分钟前
0
0
Android中的设计模式之责任链模式

参考 《设计模式:可复用面向对象软件的基础 》5.1 Chain of responsibility 职责链 对象行为型模式 《Android源码设计模式解析与实战》第9章 使编程更有灵活性--责任链模式 意图 使多个对象...

newtrek
42分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部