Size: a a a

2020 November 05

W

WellMOR in unity3d.ru
class Main
{
   private Holder _holder;

   private void Start()
   {
       _holder.DoSmth(new Move());
   }
}

class Holder: MonoBehaviour
{
   public void DoSmth(IState state)
   {
       state.Process();
   }
}

interface IState
{
   void Process();
}

struct Move : IState
{
   public void Process()
   {
       throw new System.NotImplementedException();
   }
}

struct FindFood : IState
{
   public void Process()
   {
       throw new System.NotImplementedException();
   }
}
источник

P

Phantom in unity3d.ru
Kaira
Создавать Dictionary и писать тоже самое, просто потому что ты не хочешь switch - это странное
Если нужно будет добавить что то, или использовать где то еще, что, копировать весь switch?
источник

K

Kaira in unity3d.ru
Kaira
Удобней вынести в какой-нибудь helper класс функцию с switch
Вот
источник

A

Alex in unity3d.ru
Switch работает быстрее и потокобезапасьнее
источник

K

Kaira in unity3d.ru
Alex
Switch работает быстрее и потокобезапасьнее
+
источник

P

Phantom in unity3d.ru
WellMOR
class Main
{
   private Holder _holder;

   private void Start()
   {
       _holder.DoSmth(new Move());
   }
}

class Holder: MonoBehaviour
{
   public void DoSmth(IState state)
   {
       state.Process();
   }
}

interface IState
{
   void Process();
}

struct Move : IState
{
   public void Process()
   {
       throw new System.NotImplementedException();
   }
}

struct FindFood : IState
{
   public void Process()
   {
       throw new System.NotImplementedException();
   }
}
Зачем здесь структуры, ты еще больше усложнил задачу
источник

P

Phantom in unity3d.ru
Alex
Switch работает быстрее и потокобезапасьнее
"потокобезапасьнее" .......
источник

P

Phantom in unity3d.ru
Alex
Switch работает быстрее и потокобезапасьнее
А если надо использовать в еще одном месте?
источник

P

Phantom in unity3d.ru
А также, Dictionary можно было бы с помощью рефлексии заполнить
источник

K

Kaira in unity3d.ru
Phantom
А если надо использовать в еще одном месте?
Я же написал) создай helper class
источник

A

Alex in unity3d.ru
Phantom
А если надо использовать в еще одном месте?
Вынеси в метод/ класс какая разница
источник

W

WellMOR in unity3d.ru
Phantom
Зачем здесь структуры, ты еще больше усложнил задачу
Ясненько )))
источник

K

Kaira in unity3d.ru
Phantom
А также, Dictionary можно было бы с помощью рефлексии заполнить
Рефлексия - это очень медленно
источник

A

Alex in unity3d.ru
Kaira
Рефлексия - это очень медленно
Согласен
источник

P

Phantom in unity3d.ru
Alex
Вынеси в метод/ класс какая разница
А если там другие State надо проверять?
источник

P

Phantom in unity3d.ru
Kaira
Рефлексия - это очень медленно
Рефлексия будет использована один раз
источник

P

Phantom in unity3d.ru
Так что здесь проблем нет
источник

P

Phantom in unity3d.ru
С ее скоростю
источник

A

Alex in unity3d.ru
Рефлексия это костыль
источник

K

Kaira in unity3d.ru
Phantom
А если там другие State надо проверять?
Ты будешь также расширять класс, где строишь dictionary
источник