zoukankan      html  css  js  c++  java
  • 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,每种笔都可以写字。设计上,每种颜色的笔写对应颜色的字,每个类都只有一个写字的职责。

     总结

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

  • 相关阅读:
    eclips git中的add to Index无效解决
    关于Promise 简单使用理解
    小程序顶部可滚动导航
    读jQuery源码
    Web UI
    JavaScript滚动条插件源码
    Ajax异步刷新地址栏url改变(利用Html5 history.pushState实现)
    angular2如何按需加载?
    如何把bootstrap用webpack打包
    typings的理解
  • 原文地址:https://www.cnblogs.com/shadoll/p/14107082.html
Copyright © 2011-2022 走看看