عنوان:

‫ایجاد یک Abstract Factory با استفاده از جنریک‌ها


نویسنده: احمد نواصری
تاریخ: ۱۳۹۳/۰۸/۱۱ ۱۵:۲۵
آدرس: www.dntips.ir
همان طور که میدانید از الگوی Factory به عنوان روشی برای کاهش وابستگی اجزای یک سیستم استفاده میشود. در این مقاله میخواهیم با استفاده از جنریک‌ها، الگوی Abstract Factory را پیاده سازی کنیم.
1) ایجاد یک کلاس به نام AbstractFactory و یک متد جنریک به نام CreateObject
public class AbstractFactory
    {
        public static T CreateObject<T>() where T : class , new()
        {
            return new T();
        }
    }
2) ساخت کلاسهای مورد نظر
public class Product
    {
        public void DisplayInfo()
        {
            Console.WriteLine("Product Class Craeted. ");
        }
    }

public class Category
    {
        public void DisplayInfo()
        {
            Console.WriteLine("Category Class Created.");
        }
    }

3) حال در یک برنامه‌ی کنسول ویندوز، از کلاس AbstractFactory به شکل زیر استفاده میکنیم
static void Main(string[] args)
        {
            var p = AbstractFactory.CreateObject< Product>();
            p.DisplayInfo();
            Console.WriteLine("======");

            var c = AbstractFactory.CreateObject<Category>();
            c.DisplayInfo();
            Console.WriteLine("======");
            
            Console.ReadKey();
        }
خروجی کد بالا

نظرات

  • مهمان در ۱۳۹۳/۰۸/۱۲ ۲۱:۱۶
    تو این حالت میشه به صورت مستقیم هم از کلاس Product، آبجکت تعریف کرد. پس در این حالت کاهش وابستگی دقیقا به چه صورتی هست؟ چه فرقی هست بین ()<AbstractFactory.CreateObject<Product و ()new Product؟
    • محسن خان در ۱۳۹۳/۰۸/۱۲ ۲۱:۳۵

      مطلب فوق کمی خلاصه شده هست. یک مثال عملی اون رو برای کاهش وابستگی‌ها، می‌تونید اینجا مطالعه کنید: استفاده از Factories برای حذف Service locators در برنامه‌های WinForms

    • مهمان در ۱۳۹۳/۰۸/۲۲ ۱۰:۲۸
      درسته . اما در این حالت دیگر کلاینت شما مستقیما به کار ساخت Object را انجام نمیدهد و کار را به کلاس دیگری واگذار کرده.