Учебники

Python Design Patterns — Factory

Заводской шаблон относится к категории списка шаблонов. Он предоставляет один из лучших способов создания объекта. В фабричном шаблоне объекты создаются без предоставления логики клиенту и обращения к вновь созданному объекту с использованием общего интерфейса.

Фабричные шаблоны реализованы в Python с использованием фабричного метода. Когда пользователь вызывает метод, такой, что мы передаем строку, а возвращаемое значение в качестве нового объекта реализуется через фабричный метод. Тип объекта, используемого в фабричном методе, определяется строкой, которая передается через метод.

В приведенном ниже примере каждый метод включает объект в качестве параметра, который реализуется через фабричный метод.

Как реализовать фабричный шаблон?

Давайте теперь посмотрим, как реализовать фабричный шаблон.

class Button(object):
   html = ""
   def get_html(self):
      return self.html

class Image(Button):
   html = "<img></img>"

class Input(Button):
   html = "<input></input>"

class Flash(Button):
   html = "<obj></obj>"

class ButtonFactory():
   def create_button(self, typ):
      targetclass = typ.capitalize()
      return globals()[targetclass]()

button_obj = ButtonFactory()
button = ['image', 'input', 'flash']
for b in button:
   print button_obj.create_button(b).get_html()

Класс кнопки помогает создавать HTML-теги и связанную HTML-страницу. Клиент не будет иметь доступа к логике кода, а выходные данные представляют собой создание html-страницы.

Выход

Фабричный образец

объяснение

Код Python включает в себя логику тегов html, в которой указано значение. Конечный пользователь может посмотреть файл HTML, созданный кодом Python.