博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象原则之一 单一职责原则
阅读量:6960 次
发布时间:2019-06-27

本文共 1167 字,大约阅读时间需要 3 分钟。

前言

面向对象有人分为五大原则,分别为单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则、里氏替换原则。

也有人分为六大原则,分别为单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则、里氏替换原则、迪米特法则。

 

现在我们来介绍单一职责原则

 

单一职责原则

1)概念

按照官方说明,单一职责原则是指 应该有且只有一个一个原因引起类的变更。

通俗一点来说,一个类应该只做一类事情;一个类应该只负责一个功能。

单一职责原则是程序设计高内聚、低耦合的引申。

2)浮想联偏

作者接触单一职责原则的时候,以为很简单。单一职责嘛,一个类一个方法,不就是它的终极目标吗?

的确,这属于‘终极目标’但是此终极目标不现实。因为,一个类一个方法的确是高内聚、低耦合。但是这显然显得代码很臃肿了,维护更加不便,在中大型的项目更加如此。如果你的项目足够简单,类足够少,也可以这么来做。

所以,这里要强调一点的是,单一职责原则是一个类处理一类事情,也只有一类事情影响到这个类。并不是一个类处理一个方法。

3)开始理解

我们来举个例子。作者眼前有一支黑色笔,拿这支笔来做例子吧。

笔有它属性、被动的行为。属性有:黑色、手感好、笔尖0.5。行为有:写字、画画、扎人。当然,这里的扎人只是个例子,千万不要来真的了 >. <

按照一般的做法,我们都把笔的属性与行为都放在一个类来做。单一职责现在就起作用了,我们要分开成属性与行为。

来上UML图:

首先按照一般的设计:

一般一个接口、一个类来处理笔的各种事情,上面的图充分解析了这种说法,也是平常人设计的类。

下面,我们按照单一职责原则,来设计笔的属性、行为来隔离开,如下:

从上图看出,我们把行为以及属性动作分离开。

举了这个例子,我们看出一件事情,可以分离开多件事情的处理,从而提高了软件设计的高内聚、低耦合。

但是,我们从上面的例子,可以在分一下笔的行为。因为画画、写字是笔在纸上做的动作,而扎人是笔在人上做的动作。

更通俗地说,就是画画这个动作要发生改变的话,扎人这个动作应该不会受影响,所以扎人应该放到另外一个类中做处理。

下面我们可以更深一层地理解一下这个笔的动作可以分解成2个。

4)更深一层地理解

按照上面说的,我们可以把笔的动作分成两种,一种在纸上做的,一种是在人上做的。

为什么可以分开这两种,因为上面说了,一种在纸上做,一种在人上做。在纸上做只影响在纸张的类,在人上做只影响在人生的类。互不干扰。

我们上一下UML图吧:

 

到此结束了,下面有空再修改与补充。

 

其他链接:

 

此文转发,请注明出处,谢谢。

 

posted on
2017-06-20 18:11 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/alunchen/p/7055574.html

你可能感兴趣的文章
SQLCMD命令的几种用法
查看>>
1,Spring-mvc添加参数校验
查看>>
区块链100讲:世界银行说,比特币给各国央行打了个样
查看>>
Easyui的tree和右键菜单
查看>>
怎么修改truffle中的solidity版本?
查看>>
我的第一个基于springboot的接口
查看>>
BCH易于使用不只是说说而已
查看>>
webpack配置(第四步:html篇(进阶篇))
查看>>
shell基础、命令操作、通配符
查看>>
深入理解JVM(五)——垃圾回收器
查看>>
spring mvc 环境搭建
查看>>
装饰者模式
查看>>
单身税的时代就要来临,你还没有用Python帮你找一个女朋友吗?
查看>>
Kafka的底层实现原理
查看>>
CAS实现单点登录实例源码
查看>>
JEESZ-Zookeeper集群安装
查看>>
Dubbo背景和简介
查看>>
vue-router的HTML5 History 模式设置
查看>>
Neo 虚拟机
查看>>
Pycharm上Django的使用 Day10
查看>>