首页 > 其他分享 >趣解设计原则之单一职责(论一个小老板的发家史)

趣解设计原则之单一职责(论一个小老板的发家史)

时间:2023-08-22 13:03:46浏览次数:40  
标签:包馅 20 职责 月饼 趣解 阿明 单一 发家史

一、前言

今天我们来聊一聊设计原则中的单一职责,还是按照惯例,先介绍一下含义,然后呢,我们再来讲一个小故事。

**单一职责(SRP:Single Reposibility Principle)**的定义:

一个类或者模块只负责完成一个职责。

二、小故事

今天登场的主角,是一个叫阿明的小老板,他从小就经商,很有头脑。他经营着一家月饼店,当然,这家月饼店,也是从他祖父那一辈传下来的。

image.png

他家月饼品质很好,干净卫生、用料考究、童叟无欺,所以整个镇子里的人都爱去他家买月饼。随着互联网的发展,他家的月饼名声已经不局限于当地小镇了,国内其他地区的订单也越来越多。

产量严重不足!这是一个让阿明焦虑且急需解决的问题。但是,月饼从和面制馅包馅成型烘焙这一系列操作流程中,每一个环节都很重要,所以要培养一名合格的月饼工人培训周期大概也需要3个月左右,并且还会有一批不符合上岗能力的人被淘汰掉,这可就成为了限制阿明公司发展的障碍了。

那该怎么办呢?正在他愁眉不展的时候,他的高中同学,现在大学任教的小明给他一个建议,为什么要让一个月饼工人把所有操作环节都学会呢?为什么不每个人只专注一种工作?

“哎?对呀!”,这样每个人只学会一项技能,不仅仅培训时间更短了,而且学习难度也大大减小了。然后阿明就招收了100名年轻人,做出了如下安排:

  • 20人去学和面
  • 20人去学制馅
  • 20人去学包馅
  • 20人去学成型
  • 20人去学烘焙

按照这种安排,原本要学习3个月的培训时间被缩短为2周,而且由于只学习一种能力,几乎没有人被淘汰!

就这样,阿明的流水线工厂也建立起来了!大家干得热火朝天,阿明的月饼供销全国,成为了远近闻名的企业家。

三、总结

通过上面的一个故事,大家可以看到,从之前一个员工要负责和面制馅包馅成型烘焙这一系列流程操作,到后来只负责其中的一件事,这其实就是单一职责原则了。

除了可以提高生产力之外,还有一个非常重要的点就是——可替换性;我们假设其中有某位工人要离职不干了,那么他之前是负责包馅的,我们只需要再培训一个包馅的员工补充上去即可。而如果是一个全流程都要负责的员工离职了,这个培训和替换的代价就非常大了。

其实在我们开发和架构上,也是这样的。从之前的单体架构,再到现在的微服务架构,我们会发现,服务的粒度越来越小,这样的主要好处就是,如果某个“微服务”出现了异常或者需要升级替换,对整个系统的影响也不会很大

我们再举一个例子,比如我们家里配了一个台式机,之前呢,就是有上网和看电影的需求而已,后来呢,我们发现,新出了一款3A大作游戏,特别好玩,但是我们电脑的配置运行不了这款游戏,那我们该怎么办呢?重新买一台电脑吗?大可不必~ 我们其实只要针对显卡进行升级即可(买一块高性能的显卡,替换旧的显卡),这样,就可以满足我们玩3A大作的需求了。

每个电脑组件各司其职。如果要升级,可以针对某一模块组件升级,而不用影响到整台电脑。而且是基于接口开发,可以扩展更换不同的实现类。

所以,综上所述,接口一定要尽量做到单一职责。类的设计不应该大而全,要设计粒度小功能单一的类。如果一个类中存在多个不相干的功能,那么我们就违背了单一职责原则,应该将它拆分成多个功能单一、粒度更新的类。

今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

标签:包馅,20,职责,月饼,趣解,阿明,单一,发家史
From: https://blog.51cto.com/u_15003301/7188353

相关文章

  • 设计模式和七大原则概述及单一职责原则详解
    设计模式的目的编写软件过程中,程序员面临着来自,耦合性,内聚性以及可维护性,扩展性,重用性等方面的挑战。设计模式是为了让程序,具有更好的1.代码重用性(相同代码,不用重复编写)2.可读性(编程规范性,便于其他程序员的阅读和理解)3.可扩展性(当需要增加新的功能时,非常的方便)4.可靠......
  • 【设计模式之禅】单一职责
    最近前辈推荐我读《设计模式之禅》这本书,原因是我写的代码质量实在是一言难尽,开发速度很快,但是bug数就很多了,设计原则这种知识就需要掌握写这篇文主要是记录自己的学习以及督促自己第一章【单一职责】从我理解的层面来谈谈单一原则:明确每个类每个方法的任务,只做一......
  • 聊聊测试开发工程师的职责定位问题
    网上有人会把测开定位成为测试工具开发,主要是开发自动化测试工具或平台,用以帮助手动验收的同学提升效率。存在即合理,确实有一些团队或组织是这样建设的。但作为行业从业者,我们也应该认识到,这样是不全面的,有误导之嫌。现实中的绝大部分测开还是定位在保障业务迭代质量上,因为这......
  • 单一职责原则SRP
    所谓单一职责原则,指的是,一个类应该仅有一个引用它变化的原因。这里变化的原因就是所说的“职责”,如果一个类有多个引起它变化的原因,那么也就意味着这个类有多个职责,再进一步说,就是把多个职责耦合在一起了。这会造成职责的相互影响,可能一个职责的变化,会影响到其他职责的实现,甚至引起......
  • 设计模式原则之:单一职责模式
     对类来说的,即一个类应该只负责一项职责。如类A负责两个不同的职责,职责1,职责2。当职责1需求变更而改变A时,可能造成职责2智行错误,所以要将类A的粒度分解为A1,A2错误的应用实例packageorg.example.demo0;/***@description:单一职责原则*@author:abel.he*@date:20......
  • zabbixn 源码中 ui / frontends 文件夹下的代码文件负责的是哪方面的职责
    ui/frontends代码的职责通过下载源码查看,可以看到在zabbix-4.X中前端代码在frontends目录下,zabbix-6.X在ui目录下,虽然换了个马甲,但里面都是一些php文件。在Zabbix源码中,ui/frontends文件夹下的代码文件负责处理与用户界面(UI)相关的职责。这些文件包含了Zabbix前端......
  • 设计模式-职责链模式在Java中使用示例-采购审批系统
    场景采购单分级审批采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会......
  • 职责链模式-15
    概述职责链模式(ChainofResponsibilityPattern)又称责任链模式。它将请求的发送者和接收者解耦,如果有多个接收者,将这些接收者连接成一条链,请求沿着这条链传递,直到被处理。优点:降低耦合度,符合“开闭原则”。缺点:请求不一定会被处理。链过长会造成性能问题。classRequest......
  • IE专案工程师的职责要求
    企业对IE专案工程师的职责要求要求A岗位职责:1、负责公司LEAN(精益生产)专案的推动;2、协助团队流程改造;3、完成专案室的其他任务。 任职要求:1、三年以上IE相关工作经验;2、熟悉生产流程,统计手法,IE7大手法,QC7大手法;3、个性主动积极,责任心强;4、具备良好的统计能力,能独立作......
  • 融云观察:社交大佬发家史,模仿才是终极成功学密码?
    上周,多所高校因微信支付将收取手续费宣布暂停使用,微信致歉并称在校园非盈利场景将持续保持零费率。关注【融云全球互联网通信云】了解更多微信的回应非常迅速,但还是多次冲上了热搜榜,可见对一个用户量超过12亿的社交巨头来说,任何动作都将产生巨大影响。从2007年第一代iPhone诞......