Является ли фабричный шаблон бессмысленным в Python? - PullRequest
5 голосов
/ 18 июля 2011

Поскольку Python является утилитарным языком, пишет ли фабричные классы бессмысленно в Python? http://en.wikipedia.org/wiki/Factory_method_pattern

Ответы [ 2 ]

12 голосов
/ 18 июля 2011

Хотя бывают случаи, когда фабричный шаблон не нужен, когда он может потребоваться на других языках, бывают моменты, когда его можно было бы использовать - это может быть просто способ сделать ваш API чище, например как способ предотвращения дублирования кода, который решает, какой из серии подклассов вернуть.

Из статьи Википедии, которую вы связали:

Использовать фабричный шаблон при:

  • Создание объекта исключает повторное использование без значительного дублирования кода.
  • Создание объекта требует доступа к информации или ресурсам, которые не должны содержаться в составляющем объекте.
  • Управление жизненным циклом созданных объектов необходимо централизовать для обеспечения согласованного поведения.

Все это все еще может применяться, когда язык набирается уткой.

4 голосов
/ 18 июля 2011

Это не совсем фабрика класс , но в стандартной библиотеке Python есть хотя бы один фабричный метод: http://docs.python.org/library/collections.html#collections.namedtuple.

И, конечно, есть тот факт, что вы можете создавать классы динамически, используя встроенную type() .

Я бы не сказал, что они бессмысленны настолько, что Python предлагает большое количество возможностей для заводов, которые вы можете создать. Сравнительно просто даже написать фабричный класс, который создает фабричные классы как вызываемые экземпляры самого себя.

...