Кто-нибудь может поделиться примером использования шаблона состояния с шаблон легковеса (шаблон легковеса предназначен для создания объектов состояния для экономии памяти)?
ОБНОВЛЕНИЕ: Как использовать комбинацию шаблонов состояния и fw?
Кто-нибудь может поделиться примером использования шаблона состояния с шаблон легковеса (шаблон легковеса предназначен для создания объектов состояния для экономии памяти)?
ОБНОВЛЕНИЕ: Как использовать комбинацию шаблонов состояния и fw?
Autoboxing использует шаблон приспособленца, чтобы свести к минимуму создание объектов (для небольших значений Integer).
например для Boolean и Byte кэшируются все возможные значения.
Java использует состояния для многих компонентов, однако конечный автомат также включает функции, переключаемые состоянием.
Вот пример, который я написал, используя enum
http://vanillajava.blogspot.com/2011/06/java-secret-using-enum-as-state-machine.html
TIntArrayList
и ArrayList<Integer>
для кешей.
- person Peter Lawrey; 04.02.2012
Обычно я использую шаблон состояния, чтобы избежать условных операторов.
вместо использования:
switch (state)
{
case ParserState.BeforeMethod:
//do some processing
break;
case ParserState.InMethod:
//do some processing
break;
}
Я могу просто написать:
currentState = currentState.process(context);
Пример класса может выглядеть так
public class SomeClass : ParserState
{
public ParserState process(IParserContext context)
{
//do some proceccing
if (m_completed)
return new SomeOtherState();
return this;
}
}
т. е. логика перемещается в небольшие классы, которые используются для обработки определенного состояния. Таким образом, вы получаете две вещи: