Нотатки програміста
175 subscribers
24 photos
8 videos
9 files
45 links
Кидаю нотатки й думки з роботи, як Senior Full Stack Developer, Tech Leader, Team Leader і лектор IT)

Огляд технологій, пояснення, новини, проходження співбесід, реклама цікавих додатків і компаній, і багато іншого!

Більше: https://linktr.ee/alex.demko
Download Telegram
ФАБРИЧНИЙ МЕТОД

Ось приклад використання фабрики методів на Python:

# Класи для створюваних об'єктів
class Dog:
def __init__(self, name):
self.name = name

def speak(self):
return "Woof!"

class Cat:
def __init__(self, name):
self.name = name

def speak(self):
return "Meow!"

# Фабричний метод для створення тварин
class AnimalFactory:
def create_animal(self, animal_type, name):
if animal_type == "dog":
return Dog(name)
elif animal_type == "cat":
return Cat(name)
else:
raise ValueError("Invalid animal type")

# Використання фабрики методів
factory = AnimalFactory()

dog = factory.create_animal("dog", "Buddy")
print(dog.speak()) # Виведе: Woof!

cat = factory.create_animal("cat", "Whiskers")
print(cat.speak()) # Виведе: Meow!

У цьому прикладі AnimalFactory є фабричним методом

Він має метод create_animal, який приймає тип тварини (dog, або cat) й ім’я для створення відповідного об’єкта (у нашому випадку: "Buddy" та "Whiskers")

Після створення об’єктів ми можемо викликати метод speak(), який повертає рядок із звуком, який видає тварина (голос ми передали через у кожному класі окремо) 😉

АБСТРАКТНА ФАБРИКА

Ось приклад використання абстрактної фабрики на Java:

// Класи для створюваних об'єктів
interface Shape {
void draw();
}

class Circle implements Shape {
public void draw() {
System.out.println("Drawing a circle");
}
}

class Rectangle implements Shape {
public void draw() {
System.out.println("Drawing a rectangle");
}
}

class Triangle implements Shape {
public void draw() {
System.out.println("Drawing a triangle");
}
}

// Абстрактна фабрика для створення геометричних фігур
interface ShapeFactory {
Shape createShape();
}

class CircleFactory implements ShapeFactory {
public Shape createShape() {
return new Circle();
}
}

class RectangleFactory implements ShapeFactory {
public Shape createShape() {
return new Rectangle();
}
}

class TriangleFactory implements ShapeFactory {
public Shape createShape() {
return new Triangle();
}
}

// Використання абстрактної фабрики
public class AbstractFactoryExample {
public static void main(String[] args) {
ShapeFactory factory;

// Створення кола
factory = new CircleFactory();
Shape circle = factory.createShape();
circle.draw(); // Виведе: Drawing a circle

// Створення прямокутника
factory = new RectangleFactory();
Shape rectangle = factory.createShape();
rectangle.draw(); // Виведе: Drawing a rectangle

// Створення трикутника
factory = new TriangleFactory();
Shape triangle = factory.createShape();
triangle.draw(); // Виведе: Drawing a triangle
}
}


У цьому прикладі інтерфейс Shape представляє геометричну фігуру, а його реалізації - Circle, Rectangle та Triangle - представляють конкретні фігури.

Абстрактна фабрика представлена інтерфейсом ShapeFactory, а його реалізації - CircleFactory, RectangleFactory та TriangleFactory - відповідають за створення відповідних фігур.

У AbstractFactoryExample ми створюємо різні фабрики та використовуємо їх для створення та виведення різних геометричних фігур.


Загалом, фабричний шаблон проектування є потужним інструментом для покращення організації коду та забезпечення його гнучкості 😌

Він знаходить своє застосування в різних областях програмування, від обробки даних до графічних інтерфейсів)


Якщо ти насолоджуєшся моїми постами, донат допоможе мені віддавати більше часу на створення якісного контенту 🤗
5408810040380635

#pattern #js #python #java
❤6🤩2😍2👍1