zoukankan      html  css  js  c++  java
  • 面向对象设计原则 单一职责原则(Single responsibility principle)

    单一职责原则(SRP:Single responsibility principle)

    又称单一功能原则,面向对象的基本原则之一。它规定 一个类应该只有一个发生变化的原因。

    该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中给出。

    但实际上我们很容易明白他的意思,却很难真正的理解它。

    所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。

    而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。

    如果我们有一个 DAL 类,那 DAL 类变化的原因有多少呢?

    比如我搜索的时候要加一个字段,比如我删除要多删一些子记录,那么这算不算是不同的职责呢?

    当然算,一个是查询,一个是删除,这不是两个截然不同的职责吗?

    这是我们站在这个DAL的角度上来说,假如们站在 BLL 的角度来看呢?

    那 DAL 类的职责就只有一个了,那就是负责实体的各种数据库交互了。

    一个类,只有一个引起它变化的原因。应该只有一个职责。

    每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。

    这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。

    这个时候我们说的职责,其实应该是站在类的外部,也就是调用者来看的角度。

    比如我们上面举的例子,不会有人把四种数据库动作分在四个类中去写吧。

    所以可以说

    • 类的职责是站在外部调用的角度来看的。
    • 一个类的职责应该是一组紧密相关的功能。

    其实就是 一个类只负责一组相关的事情。

    很多程序员都是黑就是黑,白就是白的思维。

    其实呢 很多原则不是打死一定要遵守的,重点还是我们要具体情况具体分析,该让它单一的时候单一,该耦合的时候耦合。

    只要最终以实用有用为目的,就没有错误的设计。

  • 相关阅读:
    Centos7 安装 MySQL5.7
    搭建Harbor企业级docker仓库
    HAProxy安装文档
    mysqlbinlog查看 binlog日志报错mysqlbinlog: unknown variable 'default-character-set=utf8mb4'
    mysql删除数据库报错及解决方法
    服务器流量异常排查步骤(查看进程的流量)
    基于Docker Hub镜像的ProxySQL容器化部署与运行
    ProxySQL环境下,快速处理异常会话的方法(黑名单、KILL)
    DB2 SQL 错误(SQLCODE:-964,SQLSTATE:57011)处理方法
    pg_hba.conf、pool_hba.conf 以及 pool_passwd 三者间的关系
  • 原文地址:https://www.cnblogs.com/Aaxuan/p/9864518.html
Copyright © 2011-2022 走看看