六大设计原则详解(1)-单一职责原则

作者: 秦子帅 | 来源:发表于2017-09-14 07:11 被阅读89次

简介:

单一职责原则(SRP:Single responsibility principle),它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。
单一职责原则的好处:

● 类的复杂性大大降低,每个类都有清楚的定义。
● 提高可读性。
● 维护性高。
● 变更时风险率降低。

转化到Android开发中也就是我们编写的接口、类、方法要使用单一职责原则,下面通过这三个方面来详细了解一下单一职责原则。


Interface:

public interface Weather {
    //加载某日某城市的天气
    void LoadWeather(String date,String city);
    //获取天气成功
    void GetWeatherSuccess();
    //获取天气失败
    void GetWeatherError(Throwable e);
}

从接口本身来看写的没问题,但是从单一职责原则的角度上看是有问题的,接口里展示了两个职责,一个是加载数据,一个是提示信息。再换个角度想,相互不影响的方法可以拆分成多个接口,那我们来看GetWeatehrSuccess()和GetWeatherError(Throwable e),如果其中一方发生变化了,那么另一方肯定发生变化了 ;那么LoadWeather(String date,String city)和其他两个方法比较会发现相互不影响。所以LoadWeather(String date,String city)可以单独拆分出来。

所以接口要符合单一职责。


方法:

比如一个修改用户名和密码的需求,我们把它写在一个方法里.

   private void ChangeUser(String username,String address) {
        username="abc";
        address="天津市";
    }

上述代码的方法职责不明确,既有修改用户名又修改地址,不符合单一职责原则。每个方法必须的职责必须清晰明确,不仅开发简单,而且维护也很容易。

正确的修改如下:

    private void ChangeUserName(String username) {
        username="abc";
    }
    private void ChangeAddress(String address) {
        address="天津市";
    }

类:

类的单一职责原则和接口、方法的单一职责一样的,但是我们会发现先在项目开发中很多类都不太符合,那是因为类的单一职责受很多因素的影响,比如说项目的周期、技术人员的水平等等。

所以总结起来,在开发中,定义的接口和方法一定要做到单一职责,类要视情况而定。
本文参考的书籍有《设计模式之禅》以及网上博文。
大家可以关注我的微信公众号:「安卓干货铺」一个有质量、有态度的公众号!

相关文章

  • 设计模式概览

    1.设计模式概念 2.设计模式的六大原则 单一职责原则 单一职责原则(Single Responsibility ...

  • 设计模式相关问题

    一、六大设计原则:单一职责原则 、开闭原则、接口隔离原则、依赖倒置原则、里氏替换原则、迪米特原则。1、单一职责原则...

  • 设计模式6原则

    设计模式6原则 参考自csdn:设计模式之六大原则 1 单一职责原则 SRP 单一职责原则(Single Resp...

  • 设计模式之禅读书笔记

    一、六大设计原则 单一职责原则 里式替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 1、单一职责原则 ...

  • 设计模式

    设计模式六大原则[设计模式六大原则(1):单一职责原则][设计模式六大原则(2):里氏替换原则][设计模式六大原则...

  • 六大设计原则-单一职责原则【Single Responsibil

    六大设计原则 单一职责原则 里式替换原则 依赖导致原则 接口隔离原则 迪米特原则 开闭原则 单一职责原则 定义: ...

  • 设计模式六大原则

    设计模式六大原则:单一职责原则,开放封闭原则,里式替换原则,依赖倒置原则,迪米特原则和接口隔离原则。 1.单一职责...

  • Mr.Li--python-Linux-设计模式

    设计模式: 设计模式六大原则(1): 单一职责原则:一个类只负责一项职责 设计模式六大原则(2): 里氏替换原则:...

  • 单一职责原则

    个人博客原文:单一职责原则 设计模式六大原则之一:单一职责原则 简介 姓名 :单一职责原则英文名 :Single ...

  • 设计模式-六大原则

    转载自 设计模式六大原则 目录:- 设计模式六大原则(1):单一职责原则- 设计模式六大原则(2):里氏替换原则-...

网友评论

  • a6393228bea9:单一职责原则在项目中如何使用呢?我还是分不清这个职责怎么划分:relieved::relieved:
    秦子帅:@分享杰 你看你项目中写的接口,或者方法是不是一个职责。

本文标题:六大设计原则详解(1)-单一职责原则

本文链接:https://www.haomeiwen.com/subject/woqlsxtx.html