@laravel_creative_3103

К какому классу в данном случае будет обращаться интерфейс?

Такой вопрос странный, но все же:

Есть interface:

public interface IPhoneReader
{
    string[] GetInputDatas();
}


Есть главный класс, который будет использовать этот интерфейс:
class ModileStore
{
  public IPhoneReader Reader { get; set; }
  public ModileStore(IPhoneReader reader)
  {
    Reader = reader;
  }
  public void Process()
  {
    string[] data = Reader.GetInputData();
    // ...
  }
}


В классе PhoneReader делаю реализацию интерфейса:
public class PhoneReader : IPhoneReader
{
  public string[] GetInputDatas()
  {
    Console.WriteLine("Введите модель");
    string model = Console.ReadLine();
    string price = Console.ReadLine();
    return new string[] { model, price };
  }
}

............................
Теперь вопрос
При обращеннии к методу через интерфейс, что будет, если я создам такой же класс PhoneReader2, и реализую другую реализацию интерфейса, в таком случае класс MobileStore чей интерфейс реализует? PhoneReader или же PhoneReader2?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@badzoleen
Допустим ты реализовываешь свой интерфейс двумя различными классами:
public class PhoneReader : IPhoneReader { /* code.. */ }
public class TabletReader : IPhoneReader { /* code.. */ }


В конструкторе класса ModileStore ты сам укажешь какую реализацию использовать:
ModileStore store = new ModileStore(new PhoneReader ()); // тут будет использоваться PhoneReader 
ModileStore anotherStore = new ModileStore(new TabletReader ()); // тут будет использоваться TabletReader
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
При обращеннии к методу через интерфейс, что будет, если я создам такой же класс PhoneReader2, и реализую другую реализацию интерфейса, в таком случае класс MobileStore чей интерфейс реализует? PhoneReader или же PhoneReader2?

Какую передашь - такая и будет.
Если никакую не передашь - будет NRE.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы