zoukankan      html  css  js  c++  java
  • 基础原则之单一职责原则

    一、什么是SRP 

      SRP是(Single-Responsibility Principle)"单一职责原则"的简称: 一个类只有一个促使它变化的原因。所谓职责,我们可以理解它为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。"就像每个学生都要上多门课程,如果"“就像一个人身兼数职,而这些事情相互关联不大,,甚至有冲突,那他就无法很好的解决这些职责,应该分到不同的人身上去做才对。”

    二、SRP原理:
     
    案例一:实体类。
      这是一个员工类,表示员工的基本信息。其中Name,FirstName,LastName违回了SRP原则。 
    internal class Employee
        {
            public string Name;
            public string FirstName;
            public string LastName;
            public string Sex;
            //...
        }

    将Name,FirstName,LastName封装.

     internal class EmployeeName
    {
    public string Name;
    public string FirstName;
    public string LastName;
    }

      改建好后Employee类如下:

    当然当有某个类不再承担足够多的职责,不再有单独存在的理由时,就可以采用内部类,将子类(EmployeeName)塞到最常使用它的类中去。 
        internal class Employee
    {
    public EmployeeName Name;
    public string Sex;
    internal class EmployeeName
    {
    public string Name;
    public string FirstName;
    public string LastName;
    }
    }

      三、SRP优点:

      消除耦合,减少代码之间的依赖性
     四、使用SRP注意点:
      1、一个合理的类,应该仅有一个引起它变化的原因,即单一职责SRP; 
      2、在没有变化征兆的情况下应用SRP或其他原则是不明智的; 
      3、在需求实际发生变化时就应该应用SRP等原则来重构代码; 
      4、使用测试驱动开发会迫使我们在设计出现臭味之前分离不合理代码; 
      5、如果测试不能迫使职责分离,僵化性和脆弱性的臭味会变得很强烈,那就应该用Facade或Proxy模式对代码重构;
  • 相关阅读:
    网上搜索整理的前端开发工程师面试题附答案
    Python-RabbitMQ-topic(细致消息过滤的广播模式)
    Python-RabbitMQ-direct(广播模式)
    Python-RabbitMQ-fanout(广播模式)
    rabbitmq中关于exchange模式type报错
    Python-RabbitMQ(持久化)
    Python-RabbitMQ(简单发送模型)
    python-gevent模块实现socket大并发
    python-gevent模块(自动切换io的协程)
    python-greenlet模块(协程)
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/13419961.html
Copyright © 2011-2022 走看看