Вопрос говорит обо всем. Желательно в c # или java.
Вот демонстрационный проект , в котором используется шаблон состояния