加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

单一职责原则

发布时间:2020-12-14 05:25:02 所属栏目:百科 来源:网络整理
导读:单一职责原则: ? ? Single Responsibility Principle,SRP:Each class should have one and only one reason to change.——Robert C.Martin ?一个类应该仅有一个引起它变化的原因。 ? ? SRP是实现高内聚、低耦合的指导方针,是最简单,但又最难以运用的原

单一职责原则:

? ? Single Responsibility Principle,SRP:Each class should have one and only one reason to change.——Robert C.Martin ?一个类应该仅有一个引起它变化的原因。

? ? SRP是实现高内聚、低耦合的指导方针,是最简单,但又最难以运用的原则。

? ? 在SRP中,把职责定义为“变化的原因”。如果你能想到多个动机去改变一个类,那么这个类就具有多于一个的职责,当其中一个职责变化时,很可能会影响其他职责的运作。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。这就需要设计人员发现类的不同职责并将其分离。


职责扩散:

? ?在了解了SRP之后,我们有必要再了解一下职责扩散,因为往往我们会在这个地方违背SRP。所谓职责扩散,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。

? ? 比如下面的例子:

    class Program
    {
        static void Main(string[] args)
        {
            Animal animal = new Animal();
            animal.Breathe("小狗");
            animal.Breathe("小猫");
        }
    }
    class Animal
    {
        public void Breathe(string animal)
        {
            Console.WriteLine(animal + "呼吸空气 ");
        }
    }
? ? 运行结果:


? ? 程序上线后需求发生变化,又多了一条鱼出来,此时发现,鱼需要呼吸水,这时你会怎么办?是简单的改一下Animal类,还是代码重构,把动物分为陆生和水生?

? ? 所以在职责扩散到我们无法控制的程度之前,应该立刻对代码进行重构。


参考资料:

http://www.voidcn.com/article/p-obarfzju-bme.html

http://www.docin.com/p-593876879.html

http://blog.chinaunix.net/uid-17102734-id-2830087.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读