六大设计原则-单一职责原则
1、开闭原则
2、接口隔离原则
3、依赖倒置原则
4、迪米特原则
5、里氏替换原则
6、单一职责原则
单一职责原则
针对的问题
类T负责两个不同职责:职责P1和职责P2。当业务发生改变需要修改职责P1,有可能会影响到职责P2的功能。
解决方案
遵循单一职责原则,分别创建两个类:类T1和类T2。类T1负责职责P1的功能,类T2负责职责P2的功能。这样当修改P1代码的时候就不会影响到P2的功能了。
拆分后代码量会增加,理解成本也会增加,什么时候适合使用单一职责原则呢?
如果类型足够简单,方法够少,是可以在类级别去违背单一职责,如果类型复杂,方法多,建议遵循单一职责原则。
不同级别中使用的单一职责原则:
方法级别:一个方法只负责一件事。
类级别:一个类只负责一件事。
类库级别:一个类库应该职责清晰。
项目级别:一个项目应该职责清晰,比如:客户端、管理后台、后台服务、定时任务、分布式引擎等不要放在一个项目中,应该拆分。
系统级别:为通用功能拆分,比如IP定位、日志、在线统计等等。拆分后不仅能保证系统的稳定性还能提高开发效率。
六大设计原则-单一职责原则相关推荐
- 设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)
设计原则 单一职责原则(SRP) 从三大特性角度看原则: 应用的设计模式: 开放封闭原则(OCP) 从三大特性角度看原则: 应用的设计模式: 里氏替换原则(LSP) 从三大特性角度看原则: 应用的设计 ...
- 设计模式原则—单一职责原则
设计模式概念与作用: 设计模式是一套被反复使用的.多数人知晓.经过分类编目的优秀代码设计经验的总结.特定环境下特定问题的处理方法. 1)重用设计和代码 重用设计比重用代码更有意义,自动带来代码重用 2 ...
- Java设计模式七大原则-单一职责原则
目录 概述:设计模式的目的 设计模式七大原则 单一职责原则 单一职责原则注意事项和细节 概述:设计模式的目的 编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等 ...
- 六大设计原则——单一职责原则
单一职责原则的英文名称是Single Responsibility Principle,简称是SRP.这个设计原则备受争议,争议之处就是对职责的定义,什么是类的职责,以及怎么划分类的职责.我们先举例来 ...
- 学习设计模式 - 六大基本原则之单一职责原则
设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Princ ...
- Java设计原则——单一职责原则
我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习. 学习从来无捷径,循序渐进登高峰. 目录 一.基本介绍 二.应用实例 1.示例1 2.示例2 3.示例3 三.单一职责原则 设计模 ...
- [置顶] 设计模式之六大原则——单一职责原则(SRP)
定义: 应该有且仅有一个原因引起类的变更. There should never be more than one reason for a class to change. 优点: 1.类的复杂性降 ...
- Single Responsibility Principle (SRP) - OO设计的单一职责原则
前言 Robert C. Martin氏为我们总结了在面向对象的设计(OOD)中应该遵循的原则,这些原则被称为"Principles of OOD",关于"Princip ...
- 设计模式六大原则——单一职责原则(SRP)
定义 就一个类而言,应该仅有一个引起它变化的原因.通俗的说,一个类只负责一项职责. 问题的由来 手机的功能多,但是每一项的功能都不强: 拍摄功能-->专业的摄像机和照相机 手机游戏-->P ...
最新文章
- 分享Kali Linux 2016.2第47周虚拟机
- Elasticsearch+Kibana 设置连接密码
- Spring MVC讲解
- HDU - 2795 Billboard(线段树)
- 【jzoj】2018/2/2 NOIP普及组——D组模拟赛
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
- 腾讯视频如何删除观看记录
- MySQL中实现并、交、差
- File类的创建功能
- 七重定位是什么意思_手机后缀名Note、Mix、Mate代表什么意思?现在终于明白了...
- 在兼职的情况下,有什么办法可以在年底之前挣5000到一万块?
- 自学python好找工作么-学习python后好找工作吗
- 流式计算storm应用场景简介
- The seventeenth day
- 关于Google Instant 你必须知道的6件事情,互联网营销
- Ubuntu 14.04 安装 DevStack与遇到的的问题记录
- java获取手机屏幕大小_获取手机屏幕大小
- 《凤凰项目——一个IT运维传奇故事》关于运维员的那些事
- 重构:改善既有代码的设计 阅读笔记
- matlab a律非均匀量化,均匀量化与A律PCM非均匀量化实验.doc
热门文章
- 考研英语 - word-list-21
- 深度学习实战---猫狗大战(pytorch实现)
- LNK2019 无法解析的外部符号“XXX”()中引用了该符号,原因之一
- 台式计算机用手机流量上网,手机流量怎么给台式电脑用
- 我应该是懂居家办公的吧?
- 0 17在c语言中什么意思,exit(0)在c语言中是什么意思
- 豆伴匠伴学网盘豆伴匠资源下载
- 自动注册MSComm控件
- c 语言memmove,memmove - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- Security配置