Необходимо ли реализовать интерфейс на уровне модуля и с помощью видоискателя в приложении призмы?Значение интерфейса при реализации призмы
Я не вижу никакого интерфейса, который можно было бы использовать с несколькими классами.
Необходимо ли реализовать интерфейс на уровне модуля и с помощью видоискателя в приложении призмы?Значение интерфейса при реализации призмы
Я не вижу никакого интерфейса, который можно было бы использовать с несколькими классами.
Нет, просматривать модели в призме не нужно, чтобы реализовать какой-либо интерфейс. Даже не INotifyPropertyChanged
, если у вас нет данных, которые меняются с логической стороны, а не из представления.
В более старых версиях была IView
которых мнения пришлось реализовать использовать ViewModelLocator
, но больше не существует.
Определения модулей должны быть реализованы IModule
.
EDIT после комментариев:
Вы хотите создать интерфейс для одного класса, если вы хотите, чтобы иметь возможность заменить его другим классом, либо в производстве или в тесте.
Это, как говорится, не создает интерфейс для класса, как правило, но наоборот. Интерфейс на первом месте и указывает, что потребитель хочет сделать с реализацией, а затем один или несколько классов обеспечивают реализацию для одного или нескольких интерфейсов каждый.
Пример:
Учитывая класс
internal class InventoryManager
{
public IEnumerable<string> ListItems() { ... }
public void AddItem(string item) { ... }
public void RemoveItem(string item) { ... }
}
не создавать этот интерфейс:
public interface IInventoryManager
{
IEnumerable<string> ListItems();
void AddItem(string item);
void RemoveItem(string item);
}
, а скорее эти два:
public interface IItemList
{
IEnumerable<string> ListItems();
}
public interface IItemStorage
{
void AddItem(string item);
void RemoveItem(string item);
}
, потому что ваши интерфейса потреблять rs, вероятно, либо захочет посмотреть, что находится в инвентаре, либо изменить его. И вы хотите, чтобы вариант инвентаризации только для чтения отличался от записываемого.
Спасибо за ваш ответ, – Rudra
Да Viewmodel наследует класс viewmodelbase, который реализует интерфейс INotifyPropertyChanged. А для реализации модуля в призме мы должны реализовать I модуль. Мой главный вопрос: если не существует более одного класса, который может реализовать тот же интерфейс. В этом случае полезно создавать интерфейс только для одного класса. Если мы не делаем то же самое, мы теряем слабо связанную концепцию. – Rudra
Я не понимаю. У вас может быть неограниченное количество классов, реализующих один интерфейс, но у вас также может быть только один. В большинстве случаев у вас есть как минимум два: один в производственном коде и один в модульных тестах. – Haukinger