плюсы и минусы использования фабрики против обычного конструктора

(Используется Python 3.2, хотя вряд ли это имеет значение.)

У меня есть class Data, class Rules и class Result. Для обозначения экземпляра класса я использую строчные буквы.

Объект rules содержит правила, которые, будучи примененными к объекту data, могут создать объект result.

Я решаю, где разместить (довольно сложный и развивающийся) код, который фактически применяет правила к данным. Я вижу два варианта:

  1. Поместить этот код в метод класса Result, скажем parse_rules. Result конструктор будет принимать в качестве аргумента объект rules и передавать его в self.parse_rules.

  2. Поместите этот код в новый класс ResultFactory. ResultFactory будет синглтоном класса, который имеет метод, скажем build_result, который принимает rules в качестве аргумента и возвращает только что построенный объект result.

В чем плюсы и минусы этих двух подходов?

9
задан max 16 January 2012 в 07:25
поделиться