Существует ли шаблон хранения данных, подобный множественным отображениям в графике?

Различие между использованием интерфейса и абстрактным классом больше имеет отношение к организации кода для меня, чем осуществление самим языком. Я использую их много при подготовке кода к другим разработчикам для работы с тем, так, чтобы они остались в рамках намеченных шаблонов разработки. Интерфейсы являются своего рода "дизайном контракта", посредством чего Ваш код соглашается ответить на предписанный набор вызовов API, которые могут прибывать из кода, к которому у Вас нет aceess.

, В то время как наследование от абстрактного класса, "" отношение, которое является не всегда, что Вы хотите, и реализация интерфейса является больше "действия как" отношение. Это различие может быть довольно значительным в определенных контекстах.

, Например, давайте скажем, что у Вас есть Учетная запись абстрактного класса, из которой много других классов расширяются (типы учетных записей и т.д). Это имеет определенный набор методов, которые только применимы к той группе типа. Однако некоторые из этих, учетная запись разделяет на подклассы Имеющую версию реализацию, или Listable, или Доступный для редактирования так, чтобы они могли быть брошены в контроллеры, которые ожидают использовать те API. Контроллер не заботится, какой объект это

, В отличие от этого, я могу также создать объект, который не расширяется из Учетной записи, говорит Пользовательский абстрактный класс, и все еще реализует Listable и Editable, но не Имеющий версию, который не имеет смысла здесь.

Таким образом, я говорю, что подкласс FooUser НЕ является учетной записью, но СОВЕРШАЕТ поступок как Редактируемый объект. Аналогично BarAccount расширяется из Учетной записи, но не является Пользовательским подклассом, но реализует Доступный для редактирования, Listable и также Имеющий версию.

Добавление всех этих API для Доступного для редактирования, Listable и Versionable в абстрактные классы самого не только было бы нарушено и ужасно, но или копирует единые интерфейсы в Учетной записи и Пользователе, или вынудит мой Пользовательский объект реализовать Имеющий версию, вероятно, только выдать исключение.

5
задан John Munsch 6 November 2009 в 21:48
поделиться

3 ответа

Хорошо, я искал, искал и искал еще. Ссылки Энди Дента заставили меня описать данные как «временные ряды», и это помогло некоторым. Затем я наткнулся на OLAP и понял, что я делаю это заново. Я знал, что это должна быть хорошо известная, тщательно решаемая проблема, и был прав. Это OLAP.

Вы создаете группу агрегированных таблиц, которые агрегируют данные по определенным измерениям (в данном случае время), и вы даже можете получить такие инструменты, как Mondrian , которые будут принимать запросы, написанные на другом языке запросов. (т.е. не SQL) и набор таблиц фактов плюс агрегаты, и он решит, как лучше всего выполнить запрос к этим таблицам.

2
ответ дан 15 December 2019 в 01:04
поделиться

В некотором смысле, я думаю, вы как бы ответили на свой вопрос здесь, когда объяснили, как работает Mip Mapping (путем интерполяции / экстраполяции).

При разных уровнях «масштабирования» вы просто выбираете более низкое разрешение или частоту дискретизации данных. Обратное будет применяться на более высоких уровнях «масштабирования» - до точки, где вам нужно будет использовать интерполяцию (например, линейную / полиномиальную / сплайн и т. Д.) Для данных для оценки значений между вашими точками данных.

1
ответ дан 15 December 2019 в 01:04
поделиться

Мне нравится ваша аналогия с мипмаппингом, и я думаю, что область Наблюдений и измерений , особенно режимы выборки, вероятно, там, где вы найдете абстрактный дизайн данных, который вам нужен . Это дает вам теорию, лежащую в основе данных, хотя они больше думают в терминах моделей данных XML, чем реляционных таблиц.

Я работал с парнями из CSIRO, стоящими за этим, и многие мысли приходят из необходимости управлять огромными данными наборы для таких вещей, как датчики отбора проб воды. Более подробная информация на вики SEEGrid .

1
ответ дан 15 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: