public override void OnExecute()
        {
            switch (this.BuffData.BuffWorkType)
            {
            case BuffWorkTypes.ChangeAttackValue:
                ConstantModifier constantModifier_AttackValue = ReferencePool.Acquire <ConstantModifier>();
                constantModifier_AttackValue.ChangeValue = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData);
                dataModifier = constantModifier_AttackValue;

                this.GetBuffTarget().GetComponent <DataModifierComponent>()
                .AddDataModifier(NumericType.AttackAdd.ToString(), dataModifier, NumericType.AttackAdd);
                break;

            case BuffWorkTypes.ChangeMagic:
                PercentageModifier constantModifier_Magic = ReferencePool.Acquire <PercentageModifier>();
                constantModifier_Magic.Percentage = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData);
                this.dataModifier = constantModifier_Magic;

                this.GetBuffTarget().GetComponent <DataModifierComponent>()
                .AddDataModifier(NumericType.Mp.ToString(), this.dataModifier, NumericType.Mp);
                break;

            case BuffWorkTypes.ChangeSpeed:
                PercentageModifier percentageModifier_Speed = ReferencePool.Acquire <PercentageModifier>();
                percentageModifier_Speed.Percentage = BuffDataCalculateHelper.CalculateCurrentData(this, this.BuffData);
                this.dataModifier = percentageModifier_Speed;

                this.GetBuffTarget().GetComponent <DataModifierComponent>()
                .AddDataModifier(NumericType.SpeedAdd.ToString(), this.dataModifier, NumericType.SpeedAdd);
                break;
            }

            this.BuffState = BuffState.Running;
        }
 public override void OnFinished()
 {
     ReferencePool.Release(dataModifier);
     dataModifier = null;
 }