static void Main(string[] args) { var partidaFactory = new PartidaFactory(); var treino = partidaFactory.GetPartida(TipoPartidaCode.Treino); var usuarioFactory = new UsuarioFactory(); var monitor = usuarioFactory.GetUsuario(TipoUsuarioCode.Monitor); var administrador = usuarioFactory.GetUsuario(TipoUsuarioCode.Administrador); var jogadorUsuario = usuarioFactory.GetUsuario(TipoUsuarioCode.Jogador); var jogadorUsuario2 = usuarioFactory.GetUsuario(TipoUsuarioCode.Jogador); monitor.Hello(); administrador.Hello(); jogadorUsuario.Hello(); Console.WriteLine(); var jogador = (Jogador)jogadorUsuario; jogador.Id = 2; var jogador2 = (Jogador)jogadorUsuario2; ((Partida)treino).RegistrarJogador(jogador); ((Partida)treino).RegistrarJogador(jogador2); _ = jogador.Ação(jogador.Id); Console.WriteLine("\n"); var questao = new Questao(); questao.Attach((Monitor)monitor); questao.SomeBusinessLogic(); }