zoukankan      html  css  js  c++  java
  • 设计模式之美--单一职责原则

    什么是单一职责原则?

    单一职责原则的英文是Single Responsibility Principle,简称SRP。其原始英文描述是:

    A class or module should have a single responsibility.

    一个类或者模块应当只负责完成一个功能(或职责)。

    举个栗子:

    在社交产品中,需设计一个UserInfo类来记录用户心信息:

    public class UserInfo{
        private long userId;
        private String userName;
        private String email;
        private String telephone;
        private long createTime;
        private long lastLoginTime;
    
        private String provinceOfAddress; // 省
        private String cityOfAddress;    // 市
        private String regionOfAddress;    // 区
        private String detailedAddress;    // 详细地址
        //... 其他属性
    }
    

    在上述这个代码样例里,UserInfo类中包含的均为和用户相关的属性,比较满足SRP原则。但有很多和地址信息相关的属性,其实可以考虑拆分为UserAddress类,后续在扩展如电商物流等模块功能时,能更好的与UserInfo解耦。

    单一职责的好处

    单一职责原则,通过设计粒度小、功能单一的类,避免了将不相关的功能耦合在一起,提高了类的内聚性。同时,类依赖和被依赖的其他类也变少了,减少了代码的耦合性。

    但不可过多拆分类,如果拆分过细,反而会降低内聚性,影响代码的可维护性。

    如何判断类职责是否单一?

    这里没有一个具体的金科玉律,但从实际代码开发经验上,有一些可执行性的侧面判断指标,可供参考:

    • 类中的代码行数、函数、或者属性过多;

    • 类依赖的其他类过多

    • 私有方法过多

    • 类中大量的方法都是集中操作类中的几个属性

    • 比较难给类起一个合适的名字

    回顾一下

    单一职责原则的英文是Single Responsibility Principle,简称SRP。我们在设计类的时候,尽量避免设计大而全的类,要设计粒度小、功能单一的类,使得一个类只负责完成一个功能,这样有利于提高代码的复用性、可读性、可维护性,实现代码高内聚、低耦合。

  • 相关阅读:
    Implementation of Message Receiver
    Data Model for Message Receiver
    SQL SERVER 批量生成编号
    修改hosts文件
    PHP-问题处理验证码无法显示出来
    PHP-问题处理Fatal error: Uncaught Error: Call to undefined function mb_strlen()
    PHP-问题处理Fatal error: Uncaught Error: Call to undefined function simplexml_load_file()
    10进制转33进制
    PHP-生成缩略图和添加水印图-学习笔记
    SQLServer地址搜索性能优化例子
  • 原文地址:https://www.cnblogs.com/CocoML/p/12817337.html
Copyright © 2011-2022 走看看