Инкапсуляция стейтов в State Pattern.
Добавлено: 14 июн 2019, 17:38
Здравствуйте, возникла проблема. Никак не могу сообразить, как лучше всего скрыть от кода стейты. Как бы, мне надо хранить 3 состояния, что бы по надобности их вытягивать. Пришел к использованию static. Но статик так просто не инициализировать извне. Возможно стоит использовать какой-то еще класс, для того, что бы хранить классы состояния, что бы не пересоздавать их каждый раз?
Синтаксис:
Используется csharp
public class BaseState
{
static BaseState idle;
static BaseState running;
static BaseState inAirState;
public static BaseState IdleState
{
get
{
if (idle == null)
{
idle = new CharacterIdleState();
}
return idle;
}
set
{
idle = value;
}
}
public static BaseState RunningState
{
get
{
if (running == null)
{
running = new CharacterRunningState();
}
return running;
}
set
{
running = value;
}
}
public static BaseState InAirState
{
get
{
if(inAirState == null)
{
inAirState = new CharacterRunningState();
}
return inAirState;
}
set
{
running = value;
}
}
}
{
static BaseState idle;
static BaseState running;
static BaseState inAirState;
public static BaseState IdleState
{
get
{
if (idle == null)
{
idle = new CharacterIdleState();
}
return idle;
}
set
{
idle = value;
}
}
public static BaseState RunningState
{
get
{
if (running == null)
{
running = new CharacterRunningState();
}
return running;
}
set
{
running = value;
}
}
public static BaseState InAirState
{
get
{
if(inAirState == null)
{
inAirState = new CharacterRunningState();
}
return inAirState;
}
set
{
running = value;
}
}
}