Я опишу, что я пытаюсь сделать, и, надеюсь, кто-нибудь скажет мне, что это за шаблон проектирования, или укажет лучшую альтернативу.
У меня есть метод, который делает кучу сложных вещейэто включает в себя приближение. Можно вычислить результат без аппроксимации, но это требует больше работы.
Я хочу получить несколько сравнений, связанных с внутренней работой реализации.Моя идея - передать объект, который будет выполнять эту дополнительную работу, и сохранить информацию о сравнениях.
Я думаю, что хочу перейти от:
class Classifier(object):
...
def classify(self, data):
# Do some approximate stuff with the data and other
# instance members.
к
class TruthComparer(object):
def compute_and_store_stats(self, data, accessory_data):
# Do the exact computation, compare to the approximation,
# and store it.
def get_comparison_stats(self):
# Return detailed and aggregate information about the
# differences between the truth and the approximation.
class Classifier(object):
...
def classify(self, data, truth_comparer=None):
# Do some approximate stuff with the data and other
# instance members.
# Optionally, do exact stuff with the data and other
# instance members, storing info about differences
# between the exact computation and the approximation
# in the truth_comparer
if truth_comparer is not None:
truth_comparer.compute_and_store_stats(data,
[self._index, self._model],
intermediate_approximation)
Причина, по которой я не хочу выполнять эти сравнения внутри метода classify
, заключается в том, что я не думаю, что он подходит для работы этого метода или объекта для таких сравнений.
Итак, что это за шаблон дизайна, если таковой имеется?Можете ли вы предложить альтернативу?