开发手册 欢迎您!
软件开发者资料库

.NET(C#) 设计模式六大原则 单一职责原则

设计模式六大原则是单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。它们不是要我们刻板的遵守,而是根据实际需要灵活运用。只要对它们的遵守程度在一个合理的范围内,努为做到一个良好的设计。本文主要介绍一下.NET(C#) 单一职责原则(Single Responsibility Principle)。

单一职责原则(Single Responsibility Principle)

单一职责原则简单来说就是一个类只负责一项职责,一个类只负责一个功能领域中的相应职责。也就是实现高内聚、低耦合。单一职责原则能使用代码阅读简单,易于维护;扩展升级,减少修改,直接增加类;方便代码重用的。

例如,

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication{    class Program    {        static void Main(string[] args)        {            {                Animal animal = new AnimalChicken("鸡");                animal.Eat();                animal.Move();            }            {                Animal animal = new AnimalCow("牛");                animal.Eat();                animal.Move();            }            Console.ReadKey();        }    }   public abstract class Animal    {        protected string _Name = null;        public Animal(string name)        {            this._Name = name;        }        public abstract void Eat();        //{        //    if (this._Name.Equals("鸡"))        //    {        //    Console.WriteLine($"{this._Name} 吃玉米");        //}        //    else if (this._Name.Equals("牛"))        //    {        //    Console.WriteLine($"{this._Name} 吃草");        //}        ////。。        //}        public abstract void Move();        //if (this._Name.Equals("鸡"))        //    {        //    Console.WriteLine($"{this._Name} 两脚行走");        //}        //    else if (this._Name.Equals("牛"))        //    {        //    Console.WriteLine($"{this._Name} 四脚行走");        //}    }   public class AnimalCow : Animal    {        public AnimalCow(string name) : base(name)        {        }        public override void Eat()        {            Console.WriteLine($"{this._Name} 吃草");        }        public override void Move()        {            Console.WriteLine($"{this._Name} 四脚行走");        }    }   public class AnimalChicken : Animal    {        public AnimalChicken(string name) : base(name)        {        }        public override void Eat()        {            Console.WriteLine($"{this._Name} 吃玉米");        }        public override void Move()        {            Console.WriteLine($"{this._Name} 两脚行走");        }    }}