• C# 设计原则-单一职责原则


     

      单一职责原则,全称Single Responsibility Principle,英文缩写SRP。

      简单来说,就是一个类应该只有一个变化的原因,在一个类里,只负责一个职责。

      如果一个类需要修改,那么就是因为其职责发生变化这个原因才需要修改,如果因为其它原因而去修改,那这个类就是负责了多个职责。

      这里定义一个Pen类,它有Write写字的方法。

    public class Pen
    {
        public void Write()
        {
            Console.WriteLine("写字");
        }
    }
    
    public static void Main(string[] args)
    {
        Pen pen = new Pen();
        pen.Write();
    }

      如果想定义用不同颜色的笔来写,这个设计就满足不了。比如说,用黑笔和红笔,这里就具有两个职责,一个是写黑色字,一个是写红色字。下面修改方法来满足设计原则。

    第一种

    public class Pen
    {
        public void Write(String color)
        {
            if (color == "black")
            {
                Console.WriteLine("写黑字");
            }
            else if (color == "red")
            {
                Console.WriteLine("写红字");
            }
    
        }
    }

      这样让Write方法可以同时写黑字和红字。设计上,Write可以写不同的字,Write是只有一个写字的职责。

     第二种

    public class Pen
    {
        public void WriteBlack()
        {
            Console.WriteLine("写黑字");
    
        }
    
        public void WriteRed()
        {
            Console.WriteLine("写红字");
    
        }
    }

      在Pen类中定义WriteBlack和WriteRed两个方法。设计上,Pen类可以写黑字和红字,Pen是只有一个写字的职责。

     第三种

    public class BlackPen
    {
        public void Write()
        {
            Console.WriteLine("写黑字");
    
        }
    }
    
    public class RedPen
    {
        public void Write()
        {
            Console.WriteLine("写红字");
    
        }
    }

      定义BlackPen和RedPen,每种笔都可以写字。设计上,每种颜色的笔写对应颜色的字,每个类都只有一个写字的职责。

     总结

      单一职责原则的重点在于职责的划分,通过职责的细化,体现高内聚的优点,让各个模块更加清晰,可以减少修改带来的影响。 

  • 相关阅读:
    HipHop PHP & HHVM资料收集
    [转]Linux系统下如何查看及修改文件读写权限
    [转]Console命令详解,让调试js代码变得更简单
    js中(function(){…})()立即执行函数写法理解
    [Link]NoSQL
    [转]Hadoop Hive sql语法详解
    [转]redis配置文件redis.conf的详细说明
    【转】各种 NoSQL 的比较
    [转]MongoDB基本使用
    【转】windows下mongodb安装与使用整理
  • 原文地址:https://www.cnblogs.com/shadoll/p/14107082.html
Copyright © 2020-2023  润新知