美文网首页
设计模式之单一职责原则

设计模式之单一职责原则

作者: Matsn | 来源:发表于2021-09-13 14:45 被阅读0次

设计模式6大设计原则之单一职责原则

单一职则原则(SRP:Single Responsibility Principle)

一个类只负责一项职责。实现高内聚,低耦合的指导方针。

    public class Animal
    {
        private string _Name = string.Empty;

        public Animal(string name)
        {
            this._Name = name;
        }
        
        //职责不单一: 更改其中一种,会导致所有的都会一起更改,不合理
        public void Breathe()
        {
            if(this._Name == "鸡")
                Console.WriteLine(this._Name + "用肺呼吸氧气");
            else if(this._Name == "鱼")
                Console.WriteLine(this._Name + "用腮呼吸氧气");
            else if(this._Name == "蚯蚓")
                Console.WriteLine(this._Name + "通过体表的粘液交换氧气来呼吸");
            else if(this._Name == "植物")
                Console.WriteLine(this._Name + "通过光合作用来转化二氧化碳来呼吸");
            else
                Console.WriteLine("不支持的物种:" + this._Name);
        }
    }
    new Animal("鸡").Breathe();

    new Animal("鱼").Breathe();

    new Animal("蚯蚓").Breathe();

    new Animal("植物").Breathe();

上面的一个类内,即包含了鸡、鱼、蚯蚓、植物的呼吸方法,明显违反了单一职责原则,按单一职责原则修改后,代码如下:

  public abstract class AbsAnimal
  {
        protected string _Name;

        protected AbsAnimal(string name)
        {
            this._Name = name;
        }

        public abstract void Breathe();
  }

    public class Chicken : AbsAnimal
    {
        public Chicken() : base("鸡") { }

        public override void Breathe()
        {
            Console.WriteLine(this._Name + "用肺呼吸氧气");
        }
    }

    public class Fish : AbsAnimal
    {
        public Fish(string name) : base("鱼") { }

        public override void Breathe()
        {
            Console.WriteLine(this._Name + "用腮呼吸氧气");
        }
    }

    public class EarthWorm : AbsAnimal
    {
        public EarthWorm() : base("蚯蚓") { }

        public override void Breathe()
        {
           Console.WriteLine(this._Name + "通过体表的粘液交换氧气来呼吸");
        }
    }

    public class Plants : AbsAnimal
    {
        public Plants() : base("植物") { }

        public override void Breathe()
        {
            Console.WriteLine(this._Name + "通过光合作用来转化二氧化碳来呼吸");
        }
    }

    AbsAnimal animal = new Chicken();
    animal.Breathe();

    animal = new Fish();
    animal.Breathe();

    animal = new EarthWorm();
    animal.Breathe();

    animal = new Plants();
    animal.Breathe();

优点####:

  1. 降低类的复杂度,一个类只负责一项职责
  2. 提高类的可读性和系统的可维护性
  3. 降低变更引起的风险,修改一个功能时,降低对其它功能的影响

缺点####:

  1. 拆多了零碎,不好管理,不好使用,成本高

相关文章

  • 设计模式6原则

    设计模式6原则 参考自csdn:设计模式之六大原则 1 单一职责原则 SRP 单一职责原则(Single Resp...

  • 面向对象编程的设计原则

    设计模式六大原则 单一职责原则 小话设计模式原则之:单一职责原则SRP 一个类,最好只负责一件事。理解单一职责原...

  • 设计模式之单一职责原则

    设计模式6大设计原则之单一职责原则 单一职则原则(SRP:Single Responsibility Princi...

  • 设计模式六大原则(一)----单一职责原则

    设计模式六大原则之【单一职则原则】 一、什么是单一职责原则 首先, 我们来看单一职责的定义. 单一职责原则,全称S...

  • 23种设计模式

    摘自《设计模式之禅》(第2版) 设计原则 单一职责原则(Single Responsibility Princip...

  • 设计模式概览

    1.设计模式概念 2.设计模式的六大原则 单一职责原则 单一职责原则(Single Responsibility ...

  • 设计模式之开闭原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之迪米特法则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之依赖倒置原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

  • 设计模式之接口隔离原则

    相关链接:0. 设计模式之六大原则总结1. 设计模式之单一职责原则2. 设计模式之里式替换原则3. 设计模式之依赖...

网友评论

      本文标题:设计模式之单一职责原则

      本文链接:https://www.haomeiwen.com/subject/khrfgltx.html