دیزاین پترن Composite از دسته ساختاری در مجموعه ۲۳ پترن مشهور Gang of Four است. آبجکت منفرد و مجموعه‌ای از آبجکت‌ها را با یک قرارداد مشترک مدیریت می‌کند.

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

دسته‌بندی محصولات می‌تواند زیر‌دسته داشته باشد و محاسبه تعداد محصولات هر گره به‌صورت بازگشتی انجام شود.

نمونه در PHP

interface CategoryNode { public function countProducts(): int; }
final class CategoryGroup implements CategoryNode {
    public function __construct(private array $children) {}
    public function countProducts(): int {
        return array_sum(array_map(fn ($node) => $node->countProducts(), $this->children));
    }
}

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

class CategoryGroup:
    def __init__(self, children): self.children = children
    def count_products(self):
        return sum(child.count_products() for child in self.children)

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

هنگام پیمایش ساختار درختی باید چرخه‌های احتمالی و هزینه Queryهای تکراری کنترل شوند.

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