Unity设计模式—子类沙盒
一个基类定义了一个抽象的沙河方法和一些预定义的操作集合。通过将它们设置为受保护的状态已确定它们仅供子类使用。每个派生的沙盒子类根据父类提供的操作来实现沙盒操作。
子类沙盒的名字比较生僻,其实内容非常常见,平常用的很多,而且往往是已经用上了。
如果你在定义一个抽象方法,这个类中又有这个抽象方法在子类实现时要调用的的非抽象方法,那你就已经在使用这个模式了。
这种设计模式出现的背景是纵深长的继承树非常难用,比不上扁平的继承树。
核心是使用基类提供的操作集合来定义子类中的行为。
实现
父类负责实现,并提供抽象方法让子类去实现。
public abstract class SuperPower
{
public abstract void Activate();
protected void Move(float x, float y, float z)
{
Debug.Log("Move to " + x + "," + y + "," + z);
}
protected float GetPosY()
{
return 0;
}
protected void PlaySound(string soundName)
{
Debug.Log("Play sound " + soundName);
}
protected void SpawnParticles(string particleName)
{
Deb