public class CommandController
public void Visit(ICommand command)
Console.WriteLine("Nothing");
public void Visit(CommandA command)
command.Execute(ship, crew);
public void Visit(CommandB command)
public interface ICommand
void Accept(CommandController visitor);
public class CommandA: ICommand
public void Execute(int ship, string crew)
Console.WriteLine("Execute ship and crew");
public void Accept(CommandController visitor)
public class CommandB: ICommand
public void Execute(float cell)
Console.WriteLine("Execute with cell");
public void Accept(CommandController visitor)
public static void Main()
var visitor = new CommandController();