Ну, есть разделение и есть разделение.
Одно дело иметь модель, которая ничего не знает о деталях реализации своих представлений. Это хорошо.
Другое дело иметь модель, которую нельзя использовать в динамических представлениях. Если класс модели не реализует уведомление об изменениях, будет трудно надежно синхронизировать интерфейс с состоянием модели. Вы можете попытаться обмануть уведомление об изменении, поместив все это в ваши классы представлений, но в конце концов будет где-то код, который напрямую изменит состояние модели, и если он не реализует уведомление об изменении, представления не буду знать об этом, и пользовательский интерфейс выйдет из синхронизации.
Возможно, я бы не реализовал свойство IList<Star>
с открытым сеттером в Galaxy
. Я сделал бы свойство Stars
типа StarList
и создал бы класс StarList
, который реализовал IList<Star>
, если только у меня не было очень веской причины не делать это.