دیزاین پترن Command از دسته رفتاری در مجموعه ۲۳ پترن مشهور Gang of Four است. عملیات را در آبجکتی مستقل بستهبندی میکند تا بتوان آن را صفبندی، ثبت یا در زمان دیگری اجرا کرد.
سناریوی واقعی در فروشگاه
پس از ثبت سفارش یک Command برای ساخت PDF فاکتور در صف پیام قرار میگیرد.
نمونه در PHP
final class GenerateInvoice {
public function __construct(public int $orderId) {}
public function execute(InvoiceService $service): void {
$service->generate($this->orderId);
}
}
نمونه در پایتون
from dataclasses import dataclass
@dataclass
class GenerateInvoice:
order_id: int
def execute(self, service):
service.generate(self.order_id)
چه زمانی مناسب نیست؟
در طراحی واقعی لازم است Idempotency، Retry و اثر دوباره اجرای Command مدیریت شود.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.