Prototype — это
Простыми словами: вместо создания объекта с нуля через конструктор, вы клонируете уже существующий экземпляр.
▪️ Когда использовать
—
—
—
▪️ Важно: Shallow vs Deep Copy
Shallow copy — копируются только примитивы, ссылки на объекты остаются теми же
Deep copy — создаются копии вложенных объектов
▪️ Альтернативы clone
— Магический __clone()
— Статический метод: Report::copy($original)
— Сериализация: unserialize(serialize($obj))
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало.
В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать.
Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM.
- Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества.
- Ответим на ваши вопросы и разберем кейсы участников.
🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы.
👉 Зарегистрироваться на вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱2
Flyweight — это
Простыми словами:
▪️ Когда использовать
—
—
—
—
▪️ Минусы
—
—
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
Builder — это
Простыми словами:
▪️ Когда использовать
—
—
—
▪️ Builder vs конструктор
— Конструктор:
— Builder:
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
Bridge — это
Простыми словами:
▪️ Когда использовать
—
—
—
▪️ Bridge vs Strategy
— Strategy:
— Bridge:
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🔥1
Composite — это
Простыми словами:
▪️ Когда использовать
—
—
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥1
Decorator — это
▪️ Когда использовать
—
—
—
▪️ Decorator vs наследование
— Наследование:
— Decorator:
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
Пользователь нажал «Повторить заказ». Цены в его старом заказе изменились.
📦 Задание
Фича: кнопка «Повторить заказ» в личном кабинете. Копирует предыдущий заказ, применяет промокод, создаёт новый черновик. Оригинал помечается флагом repeated для аналитики.
Через неделю — тикет от бухгалтерии: суммы в старых заказах не сходятся с тем, что было при оплате. Проблема только у заказов, которые хотя бы раз «повторяли». Суммы занижены ровно на размер скидки по промокоду.
// src/Order/Order.php
class Order
{
public function __construct(
private ?int $id,
private int $userId,
private array $items,
private string $status,
private bool $repeated = false,
) {}
public function getId(): ?int { return $this->id; }
public function getItems(): array { return $this->items; }
public function getStatus(): string { return $this->status; }
public function resetForRepeat(): void
{
$this->id = null;
$this->status = 'draft';
$this->repeated = false;
}
public function markAsRepeated(): void
{
$this->repeated = true;
}
public function calculateTotal(): int
{
return array_sum(array_map(
fn(OrderItem $i) => $i->getSubtotal(),
$this->items
));
}
}
// src/Order/OrderItem.php
class OrderItem
{
public function __construct(
private int $productId,
private int $qty,
private int $price,
) {}
public function getProductId(): int { return $this->productId; }
public function getQty(): int { return $this->qty; }
public function getPrice(): int { return $this->price; }
public function getSubtotal(): int
{
return $this->qty * $this->price;
}
public function applyDiscount(int $percent): void
{
$this->price = (int) round(
$this->price * (1 - $percent / 100)
);
}
}
// src/Order/RepeatOrderHandler.php
class RepeatOrderHandler
{
public function __construct(
private OrderRepository $orders,
private PromoService $promo,
) {}
public function handle(int $originalId, ?string $promoCode): Order
{
$original = $this->orders->findById($originalId);
$copy = clone $original;
$copy->resetForRepeat();
if ($promoCode !== null) {
$discount = $this->promo->resolve($promoCode);
foreach ($copy->getItems() as $item) {
$item->applyDiscount($discount->percent);
}
}
$this->orders->save($copy);
$original->markAsRepeated();
$this->orders->save($original);
return $copy;
}
}
// src/Repository/OrderRepository.php
class OrderRepository
{
public function __construct(private PDO $pdo) {}
public function save(Order $order): void
{
if ($order->getId() === null) {
$this->insert($order);
} else {
$this->update($order);
}
}
private function update(Order $order): void
{
$this->pdo->prepare(
'UPDATE orders SET status = ?, repeated = ? WHERE id = ?'
)->execute([$order->getStatus(), (int) $order->isRepeated(), $order->getId()]);
$this->pdo->prepare('DELETE FROM order_items WHERE order_id = ?')
->execute([$order->getId()]);
foreach ($order->getItems() as $item) {
$this->pdo->prepare(
'INSERT INTO order_items (order_id, product_id, qty, price) VALUES (?, ?, ?, ?)'
)->execute([$order->getId(), $item->getProductId(), $item->getQty(), $item->getPrice()]);
}
}
}
🔹 Задачи
— Объяснить, каким образом цены в оригинальном заказе оказались изменены в базе
— Исправить код так, чтобы оригинал гарантированно не мутировал
Ставьте → 🔥 если нравится формат. Если нет → 🌚
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2❤1🌚1
Как часто вы проходите собеседования?
🔥 — Сейчас активно ищу работу
👍🏼 — Раз в несколько месяцев
❤️ — Раз в полгода-год
😁 — Не прохожу, уже работаю/ещё учусь
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25🔥15❤3👍3😢1
Facade — это
Простыми словами:
▪️ Когда использовать
—
—
—
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2👏1
Proxy — это
Простыми словами:
▪️ Виды прокси
—
—
—
—
▪️ Proxy vs Decorator
— Proxy:
— Decorator:
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Observer — это
Простыми словами:
▪️ Когда использовать
—
—
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1🤔1
Command — это
Простыми словами:
▪️ Когда использовать
—
—
—
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1😁1
State — это
Простыми словами:
▪️ Когда использовать
—
—
—
▪️ State vs Strategy
— Strategy:
— State:
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
Последние посты все по единой теме паттернов.
Удобно ли, если посты будут иногда такими едиными блоками?
🔥 — Удобно
👍🏼 — Без разницы
😁 — Скука смертная, хочется разнообразия
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍4❤2😁2
Chain of Responsibility — это
Простыми словами:
▪️ Когда использовать
—
—
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1👏1
Iterator — это
Простыми словами:
▪️ Когда использовать
—
—
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Mediator — это
Простыми словами:
▪️ Когда использовать
—
—
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1👏1
Memento — это
Простыми словами:
▪️ Когда использовать
—
—
—
▪️ Memento vs Command
— Command:
— Memento:
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
Visitor — это
Простыми словами:
▪️ Когда использовать
—
—
▪️ Минус
Please open Telegram to view this post
VIEW IN TELEGRAM