1    要点讲解

1.1  需要注意

2    代码演练

2.1  类的单一职责原则demo

2.2  接口的单一职责原则demo

2.3  方法的单一职责原则demo

1    要点讲解

1.1  需要注意

1.1.1  实际应用中,类不采用单一职责,接口和方法采用单一职责。
1.1.2  定义:单一职责规定 一个类,接口或者方法,只有一个变化的原因
1.1.3  优点:降低类的复杂性,提高可读性,维护时风险降低
1.1.4  实际应用,受依赖,组合,聚合这些关系影响,同时受控于项目规模,项目周期,技术人员水平,对进度把控等影响。适当的应用单一职责原则。

 

2    代码演练

2.1  类的单一职责原则demo

测试类:

package com.geely.design.principle.singleresponsibility;

public class Test {
public static void main(String[] args) {
WalkBird walkBird = new WalkBird();
walkBird.birdMove("鸵鸟"); FlyBird flyBird = new FlyBird();
flyBird.birdMove("大雁");
}
}

实体类1:

package com.geely.design.principle.singleresponsibility;

public class WalkBird {
public void birdMove(String birdName){
System.out.println(birdName+"用脚走!");
}
}

实体类2:

package com.geely.design.principle.singleresponsibility;

public class FlyBird {
public void birdMove(String birdName){
System.out.println(birdName+"用翅膀飞!");
}
}

打印日志:

鸵鸟用脚走!
大雁用翅膀飞!

2.2  接口的单一职责原则demo

接口1:

package com.geely.design.principle.singleresponsibility;

/**
* 这个接口和获取内容的接口有先后顺序,只有开始学习,才能获取内容,如果退出学习,就不能在获取内容了,
* 由于职责不同,所以设计两个接口符合单一职责原则
*/
public interface IcourseAction {
void beginStudy();
void quitStudy();
}

接口2:

package com.geely.design.principle.singleresponsibility;

/**
* 注,本接口主要是获取课程的内容
*/
public interface IcourseContent {
String getCourseText();//获取课程文本内容
byte[] getCourseVideo();//获取课程的视频
}

实体类:

package com.geely.design.principle.singleresponsibility;

public class Course implements IcourseAction,IcourseContent{
@Override
public void beginStudy() { } @Override
public void quitStudy() { } @Override
public String getCourseText() {
return null;
} @Override
public byte[] getCourseVideo() {
return new byte[0];
}
}

2.3  方法的单一职责原则demo

demo:

package com.geely.design.principle.singleresponsibility;

public class Method {
/**
* 正确,单一职责原则,修改用户的名称
* @return
*/
public String updateUserName(){
return "";
} /**
* 正确,单一职责原则,修改用户的密码
* @return
*/
public String updateUserPassWord(){
return "";
} /**
* 错误,作为对比
* @return
*/
public String updateUserInfo(String userId,String gender){
return " ";
}
/**
* 错误,作为对比
* @param userId
* @return
*/
public String updateUserInfo2(String userId){
return " ";
}
}

设计模式课程 设计模式精讲 3-6 单一职责原则Coding的更多相关文章

  1. 北风设计模式课程---单一职责原则(Single Responsibility Principle)

    北风设计模式课程---单一职责原则(Single Responsibility Principle) 一.总结 一句话总结: 一个类应该有且只有一个变化的原因:单一职责原则(SRP:Single Re ...

  2. 设计模式之单一职责原则(SRP)

    自己之前写过一些关于设计模式的博客,但是大部分都写得比较匆忙.现在正好趁年前有时间,笔者打算好好地整理一下自己这块知识结构.开篇的第一个原则就是设计原则里面最简单的一个原则--单一职责原则. 想必大家 ...

  3. 深入浅出系列第一篇(设计模式之单一职责原则)——从纯小白到Java开发的坎坷经历

    各位看官大大们,晚上好.好久不见,我想死你们了... 先说说写这个系列文章的背景: 工作了这么久了,每天都忙着写业务,好久没有好好静下心来好好总结总结了.正好这段时间公司组织设计模式的分享分,所以我才 ...

  4. C#软件设计——小话设计模式原则之:单一职责原则SRP

    前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...

  5. 【设计模式六大原则1】单一职责原则(Single Responsibility Principle)

        http://blog.csdn.net/zhengzhb/article/category/926691/1 图片素材来源,java学习手册 ps.内容为自己整理   定义:不要存在多于一个 ...

  6. 《javascript设计模式与开发实践》--- (单一职责原则)

    看的这本书叫<JavaScript设计模式与开发实践> 先规划一下看书的顺序,基础知识我已经大概的浏览了一遍了,没有留下笔记,以后有时间还会补上.本来打算顺着看的.但是我感觉我很难短时间内 ...

  7. 设计模式笔记:单一职责原则(SRP, Single Responsibility Principle)

    1. 单一职责原则核心思想 一个类应该有且只有一个变化的原因. 2. 为什么引入单一职责原则 单一职责原则将不同的职责分离到单独的类,每一个职责都是一个变化的中心. 在SRP中,把职责定义为变化的原因 ...

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

    zt 设计模式六大原则(1):单一职责原则 分类: 设计模式 2012-02-21 09:52 25059人阅读 评论(65) 收藏 举报 设计模式stringclass编程 (THERE SHOUL ...

  9. 设计模式六大原则(一):单一职责原则(Single Responsibility Principle)

    单一职责(SRP)定义: 不要存在多于一个导致类变更的原因,通俗的说,即一个类只负责一项职责. 问题由来: 类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可 ...

随机推荐

  1. lamp与zabbix开机自启

    目录 1.控制httpd脚本 2.控制zabbix_server脚本 3.控制zabbix_agentd脚本 4.服务端lamp开机自动启动 5.客户端zabbix_agentd开机自动启动 1.控制 ...

  2. redis哈希操作

    用户可以通过执行hset命令为哈希中的指定字段设置值: 127.0.0.1:6379> hset hash field value 根据给定的字段是否存在于散列中,hset命令的行为也会有所不同 ...

  3. IDE - IDEA - 快捷键整理 - 01. Navigation

    1. 概述 工具的熟练程度, 会决定工作效率 总共也就 140 条左右吧 需要讲解吗? 2. ref 1. idea 自带的 ReferenceCard.pdf 3. keymap 1. 文件移动 C ...

  4. 【Python】字符串(String)

    python中单引号和双引号使用完全相同. 使用三引号('''或""")可以指定一个多行字符串. 转义符 '\' 反斜杠可以用来转义,使用r可以让反斜杠不发生转义.. 如 ...

  5. pip install 安装指定版本的包

    pip install 安装指定版本的包   要用 pip 安装指定版本的 Python 包,只需通过 == 操作符 指定 pip install robotframework==2.8.7 将安装r ...

  6. git按需过滤提交文件的一个细节

    问题场景 用git管理代码时,作为git小白的我总会遇到一些无法理解的问题,在请教了一些高手后终于解开了疑惑,参考以下场景: 1.比如我们已在电脑1上完成用vs编辑项目.添加.提交到服务器的完整流程, ...

  7. LeetCode 42接雨水 按行求解(差分+排序)

    按行求解的思路比较清晰明了,但是这个方法的复杂度高达O(heightSize*sum(height[i])),几乎高达O(N^2). 但是也并不是不可以解决,经观察我们可以发现,这个算法的缺点在于要遍 ...

  8. VMware 14 激活密钥

    VMware 14 激活密钥 FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA CV7T2-6WY5Q-48EWP-ZXY7X-QGUWD

  9. 吴裕雄 PYTHON 人工智能——智能医疗系统后台智能分诊模块及系统健康养生公告简约版代码展示

    #coding:utf-8 import sys import cx_Oracle import numpy as np import pandas as pd import tensorflow a ...

  10. mysql带条件的计数

    在网站开发的过程中,经常会用到数据统计功能,因此条件计数查询便是不可避免的,下面介绍几种方法来解决此问题. 例(假设): mysql> select * from count_demo; +-- ...