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

背景

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

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

编写的程序应该满足:

1)可维护

2)可扩展

3)可复用

4)够灵活

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

书面理解

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

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

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

个人的理解

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

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

时间: 2024-12-23 04:59:36

小菜学设计模式——单一职责原则的相关文章

设计模式-单一职责原则

1.单一职责原则 单一职责原则:改变仅因为一个因素 <设计模式之禅>,作者提到有人写了个这样的接口 void changeUser(UserOB userOB,changeOptions option); 不如分开写 void changeUserName(String userName); void changeUserAddress(String address); void changeUserTel(String Tel); 虽然如作者提到的,下面的替代上面的,到底是不是应该替换呢?看

小王和你一起学习系列之设计模式-单一职责原则

单一职责原则,从字面上理解就是做一件事情. 单一职责原则应用的场景包括: 一个接口只做同一类事情 一个类只做同一类事情 一个方法只做一件事情 一段代码只做一件事情 咱们具体分析各个应用场景吧 一.一段代码 ? 一段代码代表一种逻辑.代码是最细粒度,接口.类.方法都是由代码组成的. 二.一个方法 ? 如果方法中的代码逻辑比较简单,哪怕有分支,有不同的逻辑处理,那么也是允许的.如果方法中的代码逻辑很复杂,各种条件判断,如果以后需求发生变更,导致代码发生更改, 修改的时候必然会小心翼翼,生怕改的代码对

大话设计模式---单一职责原则

单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏. 软件设计真正要做的许多内容,就是发现职责并把那些职责互相分离.    如果能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离.

小菜学设计模式——迪米特原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:迪米特原则(最少知识原则) 书面理解 迪米特原则:如果两个类不必彼此直接通信,那么这两个类就应当发生直接的相互作用.如果其中一个类需要调用另一个类的某一个方法

小菜学设计模式——接口隔离原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:接口隔离原则 书面理解 接口隔离原则:使用多个小的专门的接口,而不要使用一个大的总接口. 接口应该是内聚的,应该避免"胖"接口.一个类对另

小菜学设计模式——合成复用原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:合成复用原则 书面理解 合成复用原则:要尽量使用合成/聚合,尽量不要使用继承. 对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现.子类

小菜学设计模式——里氏替换原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:里氏替换原则 书面理解 里氏替换原则:一个软件实体如果使用的是父类的话,那么一定适用与其子类,而且它察觉不出父类对象和子类对象的区别.也就是说,在软件里面,把

小菜学设计模式——依赖倒转原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:依赖倒转原则 书面理解 依赖倒转原则: A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 简单

小菜学设计模式——开放封闭原则

背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习<大话设计模式>时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习设计模式的成长之旅. 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:开放封闭原则 书面理解 开放封闭原则:软件实体(类.模块.函数等等)应该可以扩展,但是不可以修改 对于扩展是开放的,对于修改则是关闭的 无论模块是多么的封闭,