`

设计模式学习- 单一职责原则

 
阅读更多

单一职责原则的定义:

只能有一个原因引起类的变更

单一职责原则的优点:

1.类的复杂性降低, 实现什么职责都有清晰明确的定义;
2.可读性提高, 复杂性降低, 那当然可读性提高了;
3.可维护性提高, 可读性提高, 那当然更容易维护了;
4.变更引起的风险降低, 变更是必不可少的, 如果接口的单一职责做得好, 一个接口修改只对相应的实现类有影响, 对其他的接口无影响, 这对系统的扩展性、 维护性都有非常大的帮助。
单一职责原则的总结:

单一职责原则并不是绝对的,也要视情况而定,和项目的工期,成本,人员水平息息相关。不过一个接口的方法一定要做到单一职责,因为如果做不到的话一旦接口或者方法发生改变那么相应的实现者或者调用者也要相应的做出改动,对系统的影响比较大,可维护性和可扩展性大大降低。而对于类则尽量做到只有一个原因发生变动,因为系统的变更是无法避免的,一旦发生变更如果能做到只增加相应的接口而对应的类只需要实现该接口那么还是比较理想的。

 

举例:比如一个电话接口,它有4个方法,一个是打电话,一个是发送短信,一个是发送彩信,一个是上网。

所有继承这个接口的类都要实现这4个接口,问题是有的电话是不能发送彩信的,比如诺基亚的黑白机,

有的电话是不能上网的。但是这些电话都要实现一些它其实不能实现的方法,而且每次这个接口增加一个方法他它们都要实现,比如蓝牙,无线传输等。

因为一个接口的改变会改变他所有的实现类,这样的话即使是黑白机也要实现发送彩信,上网和无线传输的功能,这样的话程序就会变的比较混乱。例如有时候调用者明明调用了一个发送彩信的接口却发现根本没有发送出去,后来才发现原来是这个手机不支持 。程序的结构变的非常的模糊,不够清晰明了,我们有时候甚至不能确定某些功能是否可以使用,同时也给后期的维护和扩展带来了很多麻烦,因为一旦改变某个功能就可能需要对应的变更其他依赖于该功能的模块,即使这些模块并不需要这些功能。这就是不遵循单一职责原则带来的坏处。

   那么试着想想如果我们在一开始就将这个接口拆分为3个接口,第一个接口有打电话和发送短信的功能,另外两个接口分别只有一个方法,那就是发送彩信和上网,他们可以继承第一个接口也可以不继承,看具体情况。

那么黑白机就可以实现第一接口,彩屏手机可以实现第二个能发送彩信的接口,智能手机实现第三个能上网的接口,这样一来程序的功能就比较清晰了,因为每个类只实现自己可以实现的方法。这样调用者也可以清楚的知道自己调用对象的某些功能确实是可用的。可扩展性和可维护性也大大提高,每次的变更都只针对于那些确实需要变更的模块,而不会发生做一些小的功能变更就要改一大片代码的情况。

分享到:
评论

相关推荐

    Java设计模式七大原则-单一职责原则.md

    设计模式

    设计模式6大原则:单一职责原则

    设计模式6大原则:单一职责原则

    设计模式(三)之单一职责原则.zip

    单一职责原则可以使类的复杂度降低,实现什么职责都有清晰明确的定义;类的可读性提高,复杂度降低;可读性提高了,代码就更容易维护;变更(需求是肯定会变)引起的风险(包括测试的难度,以及需要测试的范围)降低...

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

    本文将深入探讨这六大原则中的第一个——单一职责原则(Single Responsibility Principle, SRP),并结合AcountYear.java这个文件名来解析该原则的应用。 单一职责原则指出,一个类或者一个模块应该只有一个引起它...

    Java设计模式中单一职责原则详解.rar

    其中,"单一职责原则"(Single Responsibility Principle,SRP)是面向对象设计的基本原则之一,也是Java设计模式中的重要组成部分。本篇文章将深入探讨单一职责原则的概念、意义、应用及其在Java编程中的实际运用。...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    通过学习和掌握GoF的23种设计模式,可以显著提高程序员的编码水平,使得开发出的软件系统更加健壮、可扩展、易维护。以上每种模式都有其特定的应用场景,理解和掌握它们的关键在于不断实践和总结,在实际项目中灵活...

    java设计模式---诙谐易懂版

    6. 书中还提到了六大设计原则,包括单一职责原则(Single Responsibility Principle)、里氏替换原则(Liskov Substitution Principle)、依赖倒置原则(Dependency Inversion Principle)、接口隔离原则(Interface...

    23种 设计模式---面向对象的基本原则

    1. 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因。这意味着一个类应该只做一件事情,这样可以提高代码的可维护性和可读性。 2. 开放封闭原则(Open-Closed ...

    单一职责模式例子。

    在软件设计领域,单一职责原则(Single Responsibility Principle,简称SRP)是面向对象设计的六大原则之一,由罗伯特·C·马丁(Robert C. Martin)在其著作《Clean Code》中提出。这个原则强调一个类或者模块应当...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **缺点**:违反单一职责原则,容易成为系统瓶颈。 - **1.4 Builder模式**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**:当创建复杂对象的算法应该独立于部分...

    Java设计模式学习.pdf

    - 单一职责原则(Single Responsibility Principle):一个类只有一个引起它变化的原因。 - 开闭原则(Open/Closed Principle):软件实体应当对扩展开放,对修改关闭。 - 里氏代换原则(Liskov Substitution ...

    C#俄罗斯方块源码(单一职责原则)

    【标题】"C#俄罗斯方块源码(单一职责原则)" 涉及到的核心知识点主要是C#编程语言以及软件设计原则中的“单一职责原则”(Single Responsibility Principle, SRP)。C#是一种广泛用于开发Windows应用程序、Web服务和...

    《设计模式--基于C#的工程化实现及扩展》.(王翔).rar.rar

    此外,书中可能还会涉及面向对象设计原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP),这些都是设计模式背后的重要理论基础。 总的来说,《设计模式--基于C#...

    设计模式--java版.rar

    同时,设计模式也有助于提升系统的可扩展性和可维护性,因为它们遵循了良好的设计原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。 在Java开发中,熟练掌握和运用设计模式不仅可以提升...

    简单讲解Java设计模式编程中的单一职责原则

    Java设计模式中的单一职责原则(Single Responsibility Principle,SRP)是面向对象设计的基本原则之一,它的核心思想是:一个类或者一个模块应该只有一个引起它变化的原因。这意味着一个类应该只负责一项职责,使得...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)(0520_).rar

    书中的"工程化实现"部分可能讲解了如何将设计模式应用于实际项目开发中,包括如何在C#项目中组织代码,遵循SOLID原则(单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则),以及如何利用设计模式...

    设计模式2-结构型模式&设计模式基本原则

    1. **单一职责原则**:一个类应该只做一件事情,有一个明确的责任。 2. **开放封闭原则**:软件实体(类、模块、函数等)应对于扩展开放,对于修改关闭。 3. **里氏替换原则**:子类必须能够替换掉它们的基类,而不...

    设计模式6大原则

    设计模式原则:单一职责原则,里氏替换,依赖倒转,接口隔离,开放关闭等等。

Global site tag (gtag.js) - Google Analytics