查看原文
其他

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

2017-09-14 qzs 安卓干货铺

简介:

单一职责原则(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="天津市";    }


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

所以总结起来,在开发中,定义的接口和方法一定要做到单一职责,类要视情况而定。



    

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存