单一职责原则
一个模块只负责一件事
一个类只负责一件事
一个方法只负责一件事
如何遵守单一职责原则
定义抽象父类或者父类的虚方法
子类继承后重写,不同的实现
单一职责的不同层面
1.方法为单位
一个方法只负责一件事
2.类为单位
一个类只负责一件事
不属于该类的内容,创建新的类去封装
3.模块为单位
一个模块只负责一件事
不属于该项目的内容,交由属于的模块去负责
实例:不同动物的叫声处理,喊叫⽅法中多个分⽀,还是不同类不同喊叫⽅法
using UnityEngine;
#region SRP
public abstract class Animal
{
private string animalName;
//只读属性
public string AnimalName => animalName;
protected Animal(string animalName)
{
this.animalName = animalName;
}
/// <summary>
/// 喊叫
/// </summary>
/// <returns>喊叫声音</returns>
public abstract string Shout();
}
public class Dog : Animal
{
public Dog(string animalName) : base(animalName)
{
}
public override string Shout()
{
return "汪汪汪";
}
}
public class Cat : Animal
{
public Cat(string animalName) : base(animalName)
{
}
public override string Shout()
{
return "喵喵喵";
}
}
#endregion
public class SRP : MonoBehaviour
{
public static void NewAnimalShout(Animal animal)
{
Debug.Log( animal.Shout());
}
public static string AnimalShout(string animalType)
{
switch (animalType)
{
case "Dog":
return "汪汪汪";
case "Cat":
return "喵喵喵";
case "Pig":
return "哼哼哼";
}
return null;
}
}