در دنیای توسعه نرمافزار، استفاده از الگوهای طراحی (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 یک ابزار ارزشمند برای تیم شما خواهد بود.