У меня есть коллекция экземпляров одного и того же объекта, например (в Python - мой вопрос фактически не зависит от языка)
class shopping_cart:
def __init__(self, newID, newproduct, currentdate, dollars ):
shopping_cart.customerID = newID
shopping_cart.product = newproduct
shopping_cart.date = currentdate
shopping_cart.value = dollars
, который моделирует то, что купил каждый клиент, когда и за сколько денег,Теперь, в программном обеспечении, которое я пишу, мне нужно вычислить некоторую базовую статистику о моих клиентах, и для этого мне нужно вычислить такие вещи, как среднее значение всех предметов, которые были куплены - или среднее значение, которое купил каждый отдельный покупатель.В настоящее время набор данных очень мал, поэтому я делаю это, перебирая все экземпляры моих shopping_cart
объектов и извлекая данные из каждого экземпляра по мере необходимости.
Но данные скоро станут огромными - и тогдаможет случиться так, что подобное зацикливание просто слишком медленно, чтобы получать ежедневную статистику вовремя - и для различных операций мне нужно будет организовать свои данные в структурах, которые будут предлагать скорость для диапазона операций, которые я хочу выполнить в будущем (например, векторизованные данные, чтобы я мог использовать быстрые алгоритмы для этого).
Существует ли способ использования ООП, который достаточно хорошо позволяет мне проводить рефакторинг базовых структур данных, отделяя операции, которые мне нужнывыполнять на данных из структуры, в которой данные сохраняются?(Возможно, мне придется переписать мой код и перепроектировать мой класс, но я бы предпочел сделать это сейчас, чтобы поддержать такую инкапсуляцию, чем делать это позже, где мне, возможно, придется пройти гораздо больший рефакторинг, когда мне придется переписать операции и структуры данных вместе.)