الگوی طراحی Mother Object چیست؟

دیزاین پترن Mother Object Pattern چیست؟

در دنیای توسعه نرم‌افزار، استفاده از الگوهای طراحی (Design Patterns) نقش مهمی در بهینه‌سازی کد ایفا می‌کند. یکی از الگوهای کاربردی که کمتر شناخته شده ولی بسیار مفید است، الگوی طراحی Mother Object نام دارد. این الگو به ویژه در ساده‌سازی ایجاد داده‌های تستی برای تست واحد (Unit Testing) کاربرد دارد و می‌تواند سرعت توسعه را افزایش دهد.

الگوی طراحی Mother Object چیست؟

الگوی طراحی Mother Object چیست؟

الگوی طراحی Mother Object، یک روش برای ایجاد اشیای پیش‌فرض با مقادیر آماده و قابل تنظیم است. هدف از این الگو، ساده‌سازی فرآیند تولید داده‌های تستی و کاهش تکرار کدهای نمونه‌سازی (Boilerplate Code) است.

در این الگو، یک شیء مادر (Mother Object) ساخته می‌شود که دارای تنظیمات پیش‌فرض است. سپس می‌توان این شیء را برای سناریوهای مختلف تست، سفارشی‌سازی کرد.

چرا باید از Mother Object استفاده کنیم؟

مزایای استفاده از این الگو عبارت‌اند از:

  • کاهش کد تکراری در تست‌ها

  • افزایش خوانایی تست‌های واحد

  • سهولت نگهداری داده‌های تستی

  • انعطاف‌پذیری بالا برای ساخت داده‌های سفارشی

به عنوان مثال، به جای تعریف مکرر یک شیء کاربر (User) در تست‌های مختلف، یک Mother Object تعریف می‌کنید و در هر تست مقادیر لازم را تغییر می‌دهید.

Mother Object در مقابل Test Data Builder

الگوی Test Data Builder نیز هدفی مشابه دارد اما تفاوت‌هایی وجود دارد:

  • Mother Object معمولاً ساده‌تر است و با روش‌های مستقیم کار می‌کند.

  • Test Data Builder نیاز به تعریف کلاس‌های سازنده (Builder Classes) دارد که ممکن است در پروژه‌های کوچک سنگین باشد.

به عنوان مثال، در پروژه‌های سبک یا زمانی که زمان توسعه محدود است، Mother Object یک گزینه بسیار کارآمدتر محسوب می‌شود.

نمونه کد از الگوی Mother Object در C#

یک نمونه ساده از پیاده‌سازی الگوی Mother Object در C#:

public static class UserMother
{
    public static User CreateDefaultUser()
    {
        return new User
        {
            FirstName = "علی",
            LastName = "رضایی",
            Email = "ali@example.com",
            Age = 30
        };
    }

    public static User CreateUserWithCustomAge(int age)
    {
        var user = CreateDefaultUser();
        user.Age = age;
        return user;
    }
}

در این مثال، یک کاربر پیش‌فرض ساخته شده و می‌توان سن آن را به راحتی تغییر داد.

کاربردهای متنوع Mother Object

  • تولید کاربران آزمایشی برای تست سیستم‌های احراز هویت

  • ساخت سفارش‌های فرضی در فروشگاه‌های آنلاین

  • ایجاد پیام‌های جعلی برای تست سیستم‌های چت

همچنین این الگو می‌تواند در پروژه‌هایی که با تست‌های End-to-End یا Integration Test سروکار دارند، بسیار مفید باشد.

بهترین روش‌ها برای استفاده از Mother Object

  • تعریف مقادیر پیش‌فرض معنادار و واقعی

  • استفاده از متدهای کمکی (Helper Methods) برای ایجاد تغییرات سریع

  • به‌روزرسانی Mother Object همزمان با تغییرات مدل داده‌ها

الگوی طراحی Mother Object یک روش بسیار موثر برای ساده‌سازی تست‌های واحد و مدیریت داده‌های تستی است. با استفاده از این الگو، می‌توانید کدهای تمیزتر، قابل فهم‌تر و قابل نگهداری‌تری بنویسید. اگر به دنبال افزایش سرعت توسعه و کاهش خطاها هستید، Mother Object یک ابزار ارزشمند برای تیم شما خواهد بود.

منابع:

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
ویژگی‌های جدید C# 12

ویژگی‌های جدید C# 12

آنچه در این پست میخوانید ویژگی‌های جدید C# 12 سازنده‌های اولیه (Primary Constructors) بیان‌های مجموعه (Collection Expressions) پارامترهای ref readonly…

بیشتر بخوانید
ویژگی‌های جدید C# 11

ویژگی‌های جدید C# 11

آنچه در این پست میخوانید رشته‌های خام (Raw String Literals) پشتیبانی از ریاضیات عمومی (Generic Math Support) ویژگی‌های جدید در…

بیشتر بخوانید
ویژگی‌های جدید C# 10

ویژگی‌های جدید C# 10

آنچه در این پست میخوانید Record Structs Improvements of Struct Types Interpolated String Handler Global Using Directives File-scoped Namespace Declaration…

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید