Касательно вашего случая - напишите схематично каркас вашего приложения, оптимально с вашей точки зрения, без конкретной реализации методов. А затем задайте себе вопрос - в скольких местах потребуется править уже готовый код, если понадобится добавить нового персонажа, или новое действие, или новый предмет, или изменить свойства уже существующего объекта или изменить его поведение. Чем меньше потребуется правок при изменениях и расширениях - тем ближе код к оптимальному.
А пытаться применить некий паттерн ради паттерна - значит загнать себя в угол.