Микросервисы — это
Они взаимодействуют между собой через
Главные плюсы —
Такой подход противопоставляется
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🔥1👏1
Паттерн Фасад относится к
Проще говоря, Фасад — это
Плюсы:
Минусы:
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1🔥1
Strategy — это
Когда использовать:
—
—
—
Преимущества:
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤩2❤1🔥1💯1
Singleton — это
🔹 Основные характеристики:
—
—
—
🔹 Когда использовать:
—
—
—
—
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2💯1
Adapter (Адаптер) — это
🔹 Когда использовать:
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1👏1
Factory Method —
🔹 Когда использовать:
🔹 Как работает:
🔹 Плюсы:
—
—
—
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1👏1
Abstract Factory — это
Простыми словами:
▪️ Пример:
// Абстрактные продукты
interface EmailSender {
void send(String to, String message);
}
interface SmsSender {
void send(String phone, String message);
}
// Абстрактная фабрика
interface NotificationFactory {
EmailSender createEmailSender();
SmsSender createSmsSender();
}
// AWS реализация
class AwsEmailSender implements EmailSender {
public void send(String to, String message) {
System.out.println("Отправка через AWS SES: " + to);
}
}
class AwsSmsSender implements SmsSender {
public void send(String phone, String message) {
System.out.println("Отправка через AWS SNS: " + phone);
}
}
class AwsNotificationFactory implements NotificationFactory {
public EmailSender createEmailSender() {
return new AwsEmailSender();
}
public SmsSender createSmsSender() {
return new AwsSmsSender();
}
}
// Аналогично FirebaseNotificationFactory...
// Использование
NotificationFactory factory = new AwsNotificationFactory();
EmailSender email = factory.createEmailSender();
SmsSender sms = factory.createSmsSender();
// Гарантия: оба сервиса работают через AWS
▪️ В чем отличие от Factory Method
— Factory Method создает
— Abstract Factory создает
▪️ Когда использовать
▪️ Минус
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤2
Prototype — это
Простыми словами: вместо создания объекта с нуля через конструктор, вы клонируете уже существующий экземпляр.
▪️ Пример:
// Прототип
abstract class Report implements Cloneable {
protected String template;
protected DatabaseConnection dbConnection;
protected Map<String, Object> settings;
// Сложная инициализация
public Report() {
this.dbConnection = new DatabaseConnection(); // затратная операция
this.settings = loadDefaultSettings(); // загрузка из файла
}
@Override
public Report clone() {
try {
Report cloned = (Report) super.clone();
// Глубокое копирование для изменяемых полей
cloned.settings = new HashMap<>(this.settings);
return cloned;
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
abstract void generate();
}
class SalesReport extends Report {
void generate() {
System.out.println("Генерация отчета по продажам");
}
}
// Использование
Report prototype = new SalesReport(); // долгая инициализация
// Быстрое создание копий
Report report1 = prototype.clone();
Report report2 = prototype.clone();
report2.settings.put("period", "Q2"); // изменяем только нужные параметры
▪️ Когда использовать
—
—
—
▪️ Важно: Shallow vs Deep Copy
Shallow copy — копируются только примитивы, ссылки на объекты остаются теми же
Deep copy — создаются копии вложенных объектов
▪️ Альтернативы clone()
— Copy constructor: new Report(original)
— Статический метод: Report.copy(original)
— Сериализация: для очень сложных объектов
▪️ Минус
#patterns
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1👏1