当前位置: 首页 > news >正文

小菜学设计模式——单一职责原则

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    背景

    本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习《大话设计模式》时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅。

    真诚的希望自己能够从一名小菜成长为一名大鸟!

    编写的程序应该满足:

    1)可维护

    2)可扩展

    3)可复用

    4)够灵活

    废话少说,言归正传,设计模式原则之:单一职责

    书面理解

    单一职责:就一个类而言,应该仅有一个引起它变化的原因

    如果一个类承担职责过多,接等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化放生时,设计会遭受到意想不到的破坏。

    软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。判断是否应该分离的标准是:如果你能够想到多于一个的动机去改变一个类,那么这个类具有多于一个的职责。

    个人的理解

    假设一件衣服是上班的正装,那么请不要在聚会的时候使用;如果是聚会时使用的休闲礼服,请不要穿着去上班。正装的唯一职责就是上班时穿,礼服的唯一职责就是聚会时穿。如果二者混在一起,假设你穿着正装去参加聚会,那么聚会上很可能需要打扮、修饰一下自己的衣服,那么会尽量把正装的风格往休闲的角度去整改,整改成功之后,可以参加聚会了,但是这件衣服似乎会已经影响到了下次上班穿。

    单一职责:不是一个类只做一件事情,而是类(属性以及操作属性的方法)内部的任何改变都不会影响到类的最初的目的。

    








转载于:https://my.oschina.net/heweipo/blog/419845

相关文章:

  • 算法-最大公约数
  • Androd开发之广告栏设计
  • nginx+lua+redis(openresty)配置
  • 模拟 2015百度之星资格赛 1003 IP聚合
  • 增值税发票管理解决方案
  • SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)...
  • Ubuntu 下 Mysql 新建数据库和用户
  • 运维角度浅谈MySQL数据库优化
  • springmvc常用的组件,注解,跳转
  • Codeforces Round #306 (Div. 2) E. Brackets in Implications 构造
  • ZH奶酪:【数据结构与算法】并查集基础
  • lnmp 在nginx中配置相应的错误页面error_page
  • Android 官方命令深入分析之Android Debug Bridge(adb)
  • 使用cardme读写VCard文件,实现批量导入导出电话簿
  • 使用SQL Server 2008远程链接时SQL数据库不成功的解决方法
  • canvas 绘制双线技巧
  • Centos6.8 使用rpm安装mysql5.7
  • Linux后台研发超实用命令总结
  • Mybatis初体验
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • springMvc学习笔记(2)
  • 初识 beanstalkd
  • 初识MongoDB分片
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 缓存与缓冲
  • 基于组件的设计工作流与界面抽象
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 使用API自动生成工具优化前端工作流
  • 手写一个CommonJS打包工具(一)
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 通过git安装npm私有模块
  • 一文看透浏览器架构
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 找一份好的前端工作,起点很重要
  • MyCAT水平分库
  • 关于Android全面屏虚拟导航栏的适配总结
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ###项目技术发展史
  • #define,static,const,三种常量的区别
  • #pragma预处理命令
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (二)学习JVM —— 垃圾回收机制
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (转)winform之ListView
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .gitignore
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET Micro Framework初体验(二)
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • @vue/cli 3.x+引入jQuery
  • [145] 二叉树的后序遍历 js
  • [Android] Amazon 的 android 音视频开发文档