Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Опт. решение для разделения объектов данных от чтения/записи и отображения

12.03.20 12:43
Re: Опт. решение для разделения объектов данных от чтения/записи и отображения
 
Программист коренной житель
в ответ Murr 12.03.20 11:28
void IReadWrite.Read(Stream s) & void IReadWrite.Write(Stream s) должны быть имплементированы там, где никто не знает об class SomeObject

Это делается еще одним уровнем абстракции. При этом вариантов два:

1) сделать универсальный интерфейс для SomeObject, которым можно было бы абстрагироваться от имен. Например такой:

  public interface IDataContent
  {
    object this [string propertyName] { get; set; }
  }

SomeObject должен имплементировать этот интерфейс и именно его передавать ридеру.


2) сделать аналогичную абстракцию для ридера. Так что SomeObject будет получать этот интерфейс при чтении (типа такого: void IReadWrite.Read(IDataContent data)).



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

Ну значит где-то должен быть метод, который знает и сам объект и редактор. И тут опять два варианта:

1) этот метод вызывается до того, как создается объект с данными. в этом случае интерфейс IEditor можно передать в конструктор.

2) этот метод можно вызвать непосредственно из геттера.


А вообще, стрелять себе в ногу и потом придумывать решения для элементарных задач - это, судя по всему, местная забава :D

 

Перейти на