设计模式-单一职责原则
单一职责原则使用的是创建型模式

创建型模式

创建型模式对类进行抽象

重点,创建型模式能够将对象的创建和和对象的使用分离。即使用创建型模式能够使得对象的创建,对象的使用分离。重点在于分离。

什么是单一的职责原则

设计模式有六大基本原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则,开闭原则。
其中创建型模式符合单一职责原则。

单一职责原则

即SRP 用户角色管理等模块,使用的是RBAC模型

RBAC 一种以角色为储存的控制,使用RBAC 不赋予权限,赋予角色,例如windows的用户管理,使用的是赋予角色,对用户进行管理,这种方式为RBAC,目的在于使得用户和权限分离。

设计一个用户管理,依据单一职责模型,设计以下的结构。

该结构定义一些管理用户的,增加用户的一些内容,写入一个接口中,然后进行实现。

该接口具有以上的问题。
用户的属性(是否为注册用户,vip用户等等),用户的行为(增加用户,删除用户)没有分开。
该接口一团糟!
应该用户的信息,用户的行为抽取为一个接口,然后一个接口继承这两个接口
更改的如下所示

why? 为什么要分离,因为单一职责原则,当使用单一职责原则的时候,每个接口,每个类需要承担单一的职责,不应该承担过多的原则,易于维护

核心 ,一个接口只有一个原则!一个接口只能负责一件事情,只有一个原因能引起其变化

实现一个电话的接口

这个接口包含两个职责,协议管理和数据传送。
dial和chat为通话,该通话和拨打电话,使用了同时都和协议有关系,如果要更改协议,那么这两个接口的内容都需要进行更改。由于一个接口存在两个职责,所以该接口需要划分为两个接口

此时存在一个关联关系,拨打电话和协议的实现,两者之间存在关联关系,此关联关系为静态关联

这个类图完全符合单一职责的原则。每个状态只决定一件事情。每个状态的更改只改变一件事情。

好处 复杂度降低 可读性提高 可维护性增强 变更引起的风险降低(因为变更的时候如果每个接口只负责一个单一的原则,那么一个接口的修改对其他没有影响,这样降低了整体的复杂度)

单一原则适用于方法

刀就是刀,叉就是叉,1就是1,0就是0.没有中间态,每个方法也同样的适用于单一原则,每个方法也同样的只承担一个内容。一个作用。

总结

This is sometimes hard to see
这个有时候很难说!
对接口尽量做到单一原则,类的做到引起一个原因引起的变化。

www.iming.info

设计模式-单一职责原则相关推荐

  1. 寂然解读设计模式 - 单一职责原则

    I walk very slowly, but I never walk backwards 设计模式 - 单一职责原则 ​ 寂然 大家好,我是寂然,本节课呢,我来给大家介绍设计模式原则之单一职责原则 ...

  2. 设计模式-单一职责原则-实践运用

    单一职责原则-概念 1.单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小. 2.单一职责原则定义如下: 单一职责原则(Single Responsibility Principle, S ...

  3. Java设计模式-单一职责原则

    单一职责原则 [Single Responsibility Principle]   定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责 ...

  4. 前端中会用到的设计模式之单一职责原则

    1:设计模式应用不应用,取决于对现在和未来判断后的取舍.没必要用尽量不用! 2.设计模式的目的是  减少复杂度(一个函数中包含的功能个数), 降低耦合度(一个对象与其他对象的关系个数).耦合度不能为0 ...

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

    设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...

  6. 设计模式原则--单一职责原则

    单一职责原则(SRP) 定义:就一个类而言,应该仅有一个引起它变化的原因 场景: 一个公司有3类员工,分别是 主管,程序员,销售 代码: using System; using System.Coll ...

  7. 北风设计模式课程---单一职责原则

    北风设计模式课程---单一职责原则 一.总结 一句话总结: 视频教程网上一定能找到做好笔记的博客,很大几率都不需要自己做笔记.比如北风设计模式课程,https://www.cnblogs.com/xi ...

  8. 设计模式 之 设计的 六大原则(1)单一职责原则

    由于这些原则性东西 属于概念东西,就不具体以代码描述了.以下是摘自网上和自己的一些理解 首先了解一些 面向对象的特性: 面向对象 有 三大基本特征:封装 ,继承, 多态. 封装: 也就是把客观事物封装 ...

  9. 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle

    上篇文章提及到设计模式中应遵循的设计原则,并且列出了设计模式中应当遵循的六大原则. 次篇文章主要讨论单一职责原则. 单一职责原则(SRP): 不要存在多于一个导致类变更的原因.简单的讲,就是一个类或接 ...

最新文章

  1. LeetCode简单题之判断路径是否相交
  2. C语言中文件的读写(fputc和fgetc)(putchar和getchar)
  3. 开发者在行动!中国防疫开源项目登上GitHub TOP榜
  4. java实现选项卡定时轮播_原生js面向对象编程-选项卡(自动轮播)
  5. Java中sql_Java中sql都有哪些
  6. 自己写了个nginx启动脚本,shell
  7. 2.7 Client Commands and SQL Statements
  8. 中石油训练赛 - 姓氏(思维+水题)
  9. [它山之石] 一件事情,假设你不能说清楚,十有八九你就做不好
  10. 用vs写python和c++需要哪些工具包_从运行效率与开发效率比较Python和C++
  11. 2019 ACM/ICPC 南京站 E.Observation,区间筛
  12. Audio PCM输出流程(三十三)
  13. jQuery实现textarea高度根据内容自适应
  14. ADS(Advanced Design system)使用调谐分析(Tuning)进行电路优化
  15. Android文字转语音播报
  16. 如何查看手机上已连接 WIFI 的密码
  17. 带你读论文系列之计算机视觉--Inception V4
  18. java字段太多会栈溢出_Java内存溢出与栈溢出
  19. 我的一篇旧作——卢老师
  20. 在js中调用微信的扫描二维码功能

热门文章

  1. linux目录结构及作用详图
  2. POJ 3045 Cow Acrobats (最大化最小值)
  3. Android Weekly Notes Issue #218
  4. U大师U盘装系统——原版XP系统安装(V1.2.0版)
  5. 全球各国家.INFO域名注册量统计:中国排名第八
  6. Oracle Dba手记(读书笔记)
  7. 运维工具 Ansible 快速入门教程
  8. java调用clang编译的so_在Linux上编译LLVM/Clang等全部源代码
  9. java接收前台tex格式t数据_java 下载文件时,设置response.setContentType 根据文件类型...
  10. 温故而知新 js 的错误处理机制