powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Добавление параметра в интерфейс
3 сообщений из 3, страница 1 из 1
Добавление параметра в интерфейс
    #39664998
Кнюпель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажем есть интерфейс:

Код: c#
1.
2.
3.
4.
public interface IStrategy
{
  void DoSomething(int a);
}



Часть классов используют эту реализацию. Теперь появился класс, которому надо этот-же функционал, но для его реализации нужен еще один параметр:

Код: c#
1.
void DoSomething(int a, int b);



Как правильно в этом случае поступить? Добавить параметер в исходный интерфейс попутно изменив все ссылки на него, типа такого:

Код: c#
1.
void DoSomething(int a, int b = null);



или создать вообще новый интерфейс?
...
Рейтинг: 0 / 0
Добавление параметра в интерфейс
    #39665027
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кнюпель,
есть 3 варианта:
добавить параметр

добавить метод в текущий интерфейс

добавить интерфейс

если вы "хакаете" и время критично, то выберете с самыми минимальными изменениями
если занимаетесь рефакторингом, то надо думать, особенно над тем нужно ли оно вообще
...
Рейтинг: 0 / 0
Добавление параметра в интерфейс
    #39665030
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кнюпель,

Если параметры имеют тенденцию быть расширяемыми, значит параметры оформить в единый класс, который может иметь наследников с дополнительными полями.

Код: c#
1.
DoSomething(SomethingOptionsBase options);



А так, выглядит, как неудачно спроектированный интерфейс.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Добавление параметра в интерфейс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]