MyTetra Share
Делитесь знаниями!
Пример простой фабрики объектов Circle, Sqate, Triangle для понимания что такое фабрика
Время создания: 05.04.2024 11:53
Текстовые метки: python, фабрика, объект, шаблон проектирования, пример, просто, понимание, класс, интерфейс
Раздел: Компьютер - Программирование - Язык Python
Запись: xintrea/mytetra_syncro/master/base/1712307233dmti3i5jp6/text.html на raw.github.com

Шаблон проектирования "Фабрика" (Factory) относится к классу шаблонов проектирования, которые относятся к порождающим шаблонам. Цель этого шаблона - предоставить интерфейс для создания экземпляров класса, позволяя при этом выбирать тип создаваемого объекта.


Перед рассмотрением примера нужно знать, какие понятия используются в данном шаблоне.


Основные компоненты шаблона "Фабрика":



  1. Интерфейс продукта (Product Interface): Определяет интерфейс объектов, создаваемых фабрикой.
  2. Конкретный продукт (Concrete Product): Реализует интерфейс продукта и представляет собой конкретный тип объекта, который фабрика создает.
  3. Интерфейс фабрики (Factory Interface): Определяет методы для создания объектов-продуктов.
  4. Конкретная фабрика (Concrete Factory): Реализует интерфейс фабрики и создает экземпляры конкретных продуктов.



Пример состоит в следующем.

Предположим, у нас есть иерархия классов фигур - Shape (интерфейс продукта), а также конкретные классы фигур, такие как Circle, Square и Triangle (конкретные продукты). У нас так же есть интерфейс фабрики ShapeFactory и конкретные фабрики, такие как CircleFactory, SquareFactory и TriangleFactory, которые создают соответствующие объекты.



# Интерфейс продукта

class Shape:

def draw(self):

pass


# Конкретные продукты

class Circle(Shape):

def draw(self):

print("Drawing Circle")


class Square(Shape):

def draw(self):

print("Drawing Square")


class Triangle(Shape):

def draw(self):

print("Drawing Triangle")



# Интерфейс фабрики

class ShapeFactory:

def create_shape(self):

pass


# Конкретные фабрики

class CircleFactory(ShapeFactory):

def create_shape(self):

return Circle()


class SquareFactory(ShapeFactory):

def create_shape(self):

return Square()


class TriangleFactory(ShapeFactory):

def create_shape(self):

return Triangle()



Обычно, данная иерархия класов используется следующим образом:



# Пример использования

if __name__ == "__main__":

circle_factory = CircleFactory()

circle = circle_factory.create_shape()

circle.draw()


square_factory = SquareFactory()

square = square_factory.create_shape()

square.draw()


triangle_factory = TriangleFactory()

triangle = triangle_factory.create_shape()

triangle.draw()



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


Так же в этом разделе:
 
MyTetra Share v.0.64
Яндекс индекс цитирования