دیزاین پترن الگوی کارخانه - Factory method

گردآوری و تالیف : مجله آموزشی راکت
تاریخ انتشار : 18 دی 1396
دسته بندی ها : پی اچ پی

دیزاین پترن الگوی کارخانه یکی دیگر از دیزاین پترن های دسته ی ایجادی در اصول مهندسی نرم افزار می باشد.همان طور که می دانید دسته ی ایجادی به دو الگوی اصلی تقسیم بندی می شوند که عبارتند از:

  1. الگو های class-creation
  2. الگوهای object-creational

الگو هایclass-creation  سعی در ارث بری می کنند بر روی فرآیند نمونه سازی تأثیر گذار می باشند.

الگو هایobject-creation  از نمایندگان موجود در کلاس های خود برای انجام و به سرانجام رساندن کارشان استفاده می کنند.

در برنامه نویسی شی گرا ، الگوی روش کارخانه یک الگوی خلاقانه است که از روش کارخانه برای حل مسئله ایجاد اشیاء بدون نیاز به تعیین دقیق کلاس شئ که ایجاد می شود، استفاده می شود.

الگوی متد کارخانه یکی از الگوهای طراحی برنامه‌نویسی شئ‌گرا برای پیاده‌سازی مفهوم  اصول کار کارخانه‌ها در برنامه نویسی است که به لطف خاصیت شئ گرایی مورد استفاده قرار می گیرد. مانند سایر الگوهای دسته ی ایجادی، دیزاین پترن کارخانه با ایجاد اشیاء (محصولات) بدون مشخص‌کردن کلاس اشیاء خاصی که قرار است ساخته شوند ایجاد شده است.

 اساس الگوی متد کارخانه را می شود این طور بیان کرد که

تعریف یک رابط برای ایجاد اشیاء که اجازه می‌دهد اشیایی که آن رابط را پیاده‌سازی می‌کنند در رابطه با اینکه کدام کلاس باید ایجاد شود تصمیم بگیرند. متد الگوی کارخانه اجازه می‌دهد که یک کلاس رابطه ی  ایجاد اشیاء را به زیرکلاس‌ها واگذار نماید.

به طور واضح تر روش کارخانه به کلاس اجازه می دهد تا نمونه سازی ها را به زیر کلاس ها تحویل دهد.

به طور کلی دیزاین پترن کارخانه یک رابط جهت ساخت اشیاء تعریف کرده و اجازه می‌دهد تا زیر کلاسها در مورد اینکه چه شیء را نمونه سازی کنند تصمیم بگیرند. در واقع این الگو اجازه می‌دهد تا نمونه سازی را به زیر کلاسها محول شود.

اساساً کاربرد الگوی کارخانه برای شرایطی است که چندین کلاس با ریشه مشترک داریم (یعنی چندین کلاس یک کلاس فوقانی را پیاده سازی می کنند) و غالب استفاده نیز با شی سازی (نمونه سازی) از کلاس فوقانی صورت می گیرد. 

interface DbTable
{
    public function create($array);
}

class MySqlTable implements DbTable
{
    public function create($array)
    {
        // add a record to table 1 on mysql database
    }
}

class OracleTable implements DbTable
{
    public function create($array)
    {
        // add a record to table 2 on oracle database
    }
}

class TableFactory
{
    private $dbTypeConfig = 'mysql';

    public function createTable()
    {
        if ($this->dbTypeConfig == 'mysql') {
            return new MySqlTable();
        } elseif ($this->dbTypeConfig == 'oracle') {
            return new OracleTable();
        }
        return null;
    }
}

$factory = new TableFactory();
$table = $factory->createTable();
$table->create(array(1));
این مطلب را با دیگران به اشتراک بگذارید :

مقالات پیشنهادی

دیزاین پترن کارخانه ی انتزاعی - Abstract factory

الگوی کارخانه انتزاعی، در الگوهای نرم‌افزاری روشی برای جمع‌بندی گروهی از کارخانه‌های مجزا است که ساختار مشابهی دارند ولی از کلاس‌های مختلفی تشکیل شده‌...

دیزاین پترن زنجیره - Chain-of-responsibility pattern

در برنامه نویسی به صورت شئ گرا، دیزاین پترنی وجود دارد به نام زنجیره مسئولیت که متشکل از یک مخزن شامل اشیاء فرمان و مجموعه ای از اشیاء پردازش است. هر...

دیزاین پترن مقداردهی اولیهٔ تنبل یا کاهلانه - Lazy Initialization

در برنامه نویسی کامپیوتری، مقداردهی اولیهٔ تنبل به انگلیسی ( Lazy Initialization) یک الگو برای به تأخیر انداختن ساخت یک شیء می‌باشد، به طوری که محاسبه...

دیزاین پترن استراتژی - Strategy Pattern

استراتژی پترن درواقع نوعی از دیزاین‌ پترن‌های Behavioral است که به شما اجازه می‌دهد راهکارهایی که برنامهٔ مورد نظرتان باید اجرا کند، بسته به شرایط خاص...