zoukankan      html  css  js  c++  java
  • 《架构整洁之道》之单一职责原则

    SRP是SOLID五大设计原则中最容易理解的一个。
    很多程序员根据SRP这个名字想当然地认为这个原则就是指:每个模块都应该只做一件事。

    没错,后者的确也是一个设计原则,即确保一个函数只完成一个功能。

    将大型函数重构成小函数时经常会用到这个原则,但这只是一个面向底层实现细节的设计原则,并不是SRP的全部。

    历史上,我们曾经这样描述SRP这一设计原则:
    任何一个软件模块都应该有且仅有一个被修改的原因。

    在现实环境中,软件系统为了满足用户和所有者的要求,必然要经常做出这样那样的修改。而该系统的用户或者所有者就是该设计原则中所指的”被修改的原因”。所以,我们可以这样描述SRP:
    任何一个软件模块都应该只对一个用户或系统利益相关者负责。

    这里的”用户”和”系统利益相关者”用词并不完全准确,它们很有可能指的是一个或多个用户和利益相关者,只要这些人希望对系统进行的变更是相似的,就可以归为一类(一个或多个有共同需求的人)。在这里,我们将其称为行为者。
    所以,对于SRP的最终描述都变成了:
    任何一个软件模块都应该只对某一类行为者负责。

    上述提到的”软件模块”指的是一组紧密相关的函数和数据结构。

    单一职责原则主要讨论的是函数和类之间的关系-但是它在两个讨论层面上会以不同的形式出现。

    在组件层面,我们可以将其称为共同闭包原则,在软件架构层面,它则是用于奠定架构边界的变更轴心。

  • 相关阅读:
    Leetcode:Convert Sorted List to Binary Search Tree
    Leetcode:Unique Binary Search Trees & Unique Binary Search Trees II
    Leetcode::Longest Common Prefix && Search for a Range
    Leetcode::Flatten Binary Tree to Linked List
    Leetcode::JumpGame
    leetcode power(x,n)
    Leetcode Letter Combinations of a Phone Number
    leetcode Reverse Nodes in k-Group
    leetcode Merge k Sorted Lists
    word ladder
  • 原文地址:https://www.cnblogs.com/youcong/p/13234012.html
Copyright © 2011-2022 走看看