c# 设计模式-单一原则

解释:对于一个类而言,应该只有一个发生变化的原因。(单一职责不仅仅是指类)

代码足够简单,塞在一起没有影响。

单一职责原则的优点就是高内聚,使得模块看起来有目的性,结构简单,修改当前模块对于其他模块的影响很低。缺点就是如果过度的单一,过度的细分,就会产生出很多模块,无形之中增加了系统的复杂程度。

方法:方法多个分支,还可能扩展变化,最后拆分成多个方法

类:接受输入-数据验证-逻辑计算-数据库操作-日志

接口:也会把不同的功能接口,独立开来。

 如:public class List<T> : ICollection<T>, IEnumerable<T>, IEnumerable, IList<T>, IReadOnlyCollection<T>, IReadOnlyList<T>, ICollection, IList

类库:把项目拆分成多个类库,重用-方便维护

项目:客户端-管理后台

1.在不使用单一原则,这样每次添加一个动物时会修改源代码

 1         public class Animal
 2         {
 3             public string _Name;
 4             public Animal(string name)
 5             {
 6                 this._Name = name;
 7             }
 8 
 9             public void Breath()
10             {
11                 if (_Name == "")
12                 {
13                     Console.WriteLine("呼吸水");
14                 }
15                 else if (_Name == "")
16                 {
17                     Console.WriteLine("呼吸空气");
18                 }
19             }
20         }

 

2.使用单一原则,每个类拆分,这样扩展另外一种动物,只需要扩展新增一个类就行。

 1         public abstract class AbsAnimal
 2         {
 3             public string _Name;
 4             public AbsAnimal(string name)
 5             {
 6                 this._Name = name;
 7             }
 8 
 9             public abstract void Breath();
10         }
11 
12 
13         public class FishAnimal : AbsAnimal
14         {
15             public FishAnimal(string name) :base(name)
16             {}
17             public override void Breath()
18             {
19                 Console.WriteLine("呼吸空气");
20             }
21         }

 

 

 

 public class Animal        {            public string _Name;            public Animal(string name)            {                this._Name = name;            }
            public void Breath()            {                if (_Name == "鱼")                {                    Console.WriteLine("呼吸水");                }                else if (_Name == "鸟")                {                    Console.WriteLine("呼吸空气");                }            }        }

c# 设计模式-单一原则

上一篇:460. LFU Cache 访问频率最低的元素


下一篇:WPF进阶技巧和实战07--自定义元素02