文档章节

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

learn_more
 learn_more
发布于 2015/05/25 21:50
字数 611
阅读 163
收藏 7

    背景

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

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

    编写的程序应该满足:

    1)可维护

    2)可扩展

    3)可复用

    4)够灵活

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

    书面理解

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

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

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

    个人的理解

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

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

    








© 著作权归作者所有

learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
编程中的那些套路——关于简单工厂模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 面向对象五大原则中有一点非常重要的原则:单一职责原则。 简单工厂模式就是遵循了这一原则,它让不同职...

gzchen
2018/08/27
0
0
迈向大牛的重要一步——掌握设计模式

IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。 为什么用户提出需求变更后,大牛只需潇洒地敲敲键...

一枚Sir
2015/04/10
333
0
《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们...

嗨呀豆豆呢
2018/12/30
0
0
《JavaScript设计模式与开发实践》最全知识点汇总大全

系列文章: 《JavaScript设计模式与开发实践》基础篇(1)—— this、call 和 apply 《JavaScript设计模式与开发实践》基础篇(2)—— 闭包和高阶函数 《JavaScript设计模式与开发实践》模式...

嗨呀豆豆呢
01/04
0
0
让设计模式飞一会儿|①开篇获奖感言

     哈喽,大家好,从今天开始我将正式开启有关设计模式的系列文章的写作,和大家一同来聊聊设计模式这个老生常谈的玩意。关于设计模式的文章,书籍,多如牛毛,随便百度、Google一下都...

java进阶架构师
09/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
38分钟前
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
48分钟前
9
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
58分钟前
6
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
6
0
实战项目-学成在线(八)

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。 注册中心作用: 1、微服务数量众多,要进行远程调用就需要知...

lianbang_W
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部