Прежде чем я начну, я, вероятно, должен упомянуть, что такого рода вещи, вероятно, должны были быть реализованы с использованием инфраструктуры Core Data, но об этом сейчас не может быть и речи.
У нас есть объекты данных, которые извлекаются извеб-сервис, и я пытаюсь построить для них иерархию, но я изо всех сил.
Я подумал, что мой базовый класс должен называться DataEntity, и он определяет абстрактное свойство с именем EntityId и реализует метод хешированияна основе entityId.
Любой объект, извлеченный из веб-службы, может быть реализован одним из двух способов: путем передачи NSDictionary сущности и предоставления ему возможности использовать его в качестве источника данных или путем передачи словаря.объекту и позволяя ему инициализировать свои собственные элементы данных из словаря.Я назвал эти два типа объектов DictionaryBackedDataEntity и ConcretedDataEntity.Таким образом, моя иерархия будет выглядеть так:
DataEntity -> DictionaryBackedDataEntity
-> ConcreteDataEntity
Тогда потребители этого пакета / каркаса будут по-настоящему заботиться только о доступных элементах данных, поэтому я создал протокол для каждого типа данных, который можно извлечь изинтерфейс.Так, например, у меня мог бы быть и протокол, и у них были бы элементы данных, которые должен представлять DataEntity.
Итак, моя иерархия будет выглядеть так:
DataEntity -> DictionaryBackedDataEntity -> DictionaryBackedPerson <Person>
-> DictionaryBackedAnimal <Animal>
-> ConcreteDataEntity -> ConcretePerson <Person>
-> ConcreteAnimal <Animal>
Теперь, если честно, я не уверен, должен ли я делать вышеуказанное или что-то вроде следующего:
DataEntity -> PersonEntity -> DictionaryBackedPerson
-> ConcretePerson
-> AnimalEntity -> DictionaryBackedAnimal
-> ConcreteAnimal
В приведенном выше описании PersonEntity и AnimalEntity были бы абстрактными классами, и поэтому экземплярыэто могут быть словарь DictionaryBacked или конкретный экземпляр.
У кого-нибудь есть опыт или рекомендации, как мне подходить к этому?Я, кажется, хожу по кругу и не могу принять решение ...
С уважением, N