دیزاین پترن Chain of Responsibility از دسته رفتاری در مجموعه ۲۳ پترن مشهور Gang of Four است. درخواست را از زنجیره‌ای از پردازشگرها عبور می‌دهد و هر پردازشگر می‌تواند تصمیم بگیرد ادامه دهد یا پاسخ بدهد.

سناریوی واقعی در فروشگاه

قبل از اعمال کد تخفیف، قواعد تاریخ اعتبار، سقف مصرف و حداقل مبلغ سفارش یکی پس از دیگری بررسی شوند.

نمونه در PHP

$checks = [new CheckExpiry, new CheckUsageLimit, new CheckMinCart];
foreach ($checks as $check) {
    if (! $check->passes($coupon, $cart)) {
        throw new InvalidCoupon();
    }
}

نمونه در پایتون

checks = [CheckExpiry(), CheckLimit(), CheckCartTotal()]
for check in checks:
    if not check.passes(coupon, cart):
        raise InvalidCoupon()

چه زمانی مناسب نیست؟

ترتیب Handlerها بر نتیجه اثر دارد. این پترن به طراحی Middleware نزدیک است.

برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبط‌اند.