как сделать выбор между способами ввода?

268
13 сентября 2017, 10:47

Здравствуйте. У меня есть 3 способа ввода (рандомный по возрастанию, по спаданию и просто рандомный), как мне сделать, чтобы я мог выбирать между этими способами. Если можно, покажите кодом или хотя-бы псевдокодом.

Answer 1

Накатал простейший вариант.

Сначала определим метод ввода

interface IEntryMethod
{
    int Read();
}

Потом напишем клиента

class Client
{
    IEntryMethod _entryMethod;
    public Client(IEntryMethod entryMethod)
    {
        _entryMethod = entryMethod;
    }
    public void DoStuff()
    {
        for (var i = 0; i < 3; i++)
        {
            var item = _entryMethod.Read();
            Console.WriteLine(item);
        }
    }
}

Дальше добавим парочку методов ввода

class RandomEntryMethod : IEntryMethod
{
    static Random rand = new Random();
    public int Read() 
    {
        return rand.Next();
    }
}
class ConsoleEntryMethod : IEntryMethod
{   
    public int Read()
    {
        return int.Parse(Console.ReadLine());
    }
}

Ну, и как все это юзать

void Main()
{
    Console.WriteLine("Select entry method (random/console):");
    IEntryMethod method;
    switch (Console.ReadLine())
    {
        case "random":
            method = new RandomEntryMethod();
            break;
        case "console":
            method = new ConsoleEntryMethod();
            break;
        default:
            Console.WriteLine("Error");
        return;         
    }
    var client = new Client(method);
    client.DoStuff();
}

Код на ошибки не проверял, смотрите на него как на концепт

READ ALSO
Клиент, который находит нужные сервисы

Клиент, который находит нужные сервисы

Как создаются клиенты, которые могут опросить сеть и найти нужные экземпляры служб?

244
Создание экземпляра обобщенного типа C#

Создание экземпляра обобщенного типа C#

Есть метод со следующей сигнатурой:

278
Доступ к Windows Form из другой формы

Доступ к Windows Form из другой формы

Две формы (form1, form2), 2 класса, в первом

279
Повторяющиеся слова в `.txt`

Повторяющиеся слова в `.txt`

Как найти все слова, которые повторяются вtxt файле, и вывести их на экран ?

373