الگوی متد کارخانه شیء
ترجمهٔ عنوان این مقاله دارای منبع نیست. ویرایشگران طبق سیاست تحقیق دستاول ممنوع نمیتوانند اصطلاحات زبانهای دیگر را بدون منبع ترجمه کنند و از طرف دیگر بر اساس شیوهنامه در اکثر مواقع نمیتوانند عنوان مقاله را با عنوان اصلی آن در الفباهای غیر فارسی و عربی ثبت کنند. |
این مقاله دقیق، کامل و صحیح ترجمه نشده و نیازمند ترجمه به فارسی است. کل یا بخشی از این مقاله به زبانی بهجز زبان فارسی نوشته شدهاست. اگر مقصود ارائهٔ مقاله برای مخاطبان آن زبان است، باید در نسخهای از ویکیپدیا به همان زبان نوشته شود (فهرست ویکیپدیاها را ببینید). در غیر این صورت، خواهشمند است ترجمهٔ این مقاله را با توجه به متن اصلی و با رعایت سیاست ویرایش، دستور خط فارسی و برابر سازی به زبان فارسی بهبود دهید و سپس این الگو را از بالای صفحه بردارید. همچنین برای بحثهای مرتبط، مدخل این مقاله در فهرست صفحههای نیازمند ترجمه به فارسی را ببینید. اگر این مقاله به زبان فارسی بازنویسی نشود، تا دو هفتهٔ دیگر نامزد حذف میشود و/یا به نسخهٔ زبانی مرتبط ویکیپدیا منتقل خواهد شد. اگر شما اخیراً این مقاله را بهعنوان صفحهٔ نیازمند ترجمه برچسب زدهاید، لطفاً عبارت {{جا:هبک-ترجمه به فارسی|1=الگوی متد کارخانه شیء}} ~~~~ را نیز در صفحهٔ بحث نگارنده قرار دهید. |
الگوی روش کارخانه ای یکی از الگوهای طراحی برنامهنویسی شئگرا برای پیادهسازی مفهوم کارخانهها است. مانند سایر الگوهای سازندگی، کارخانهٔ شیء با مشکل ایجاد اشیاء (محصولات) بدون مشخصکردن کلاس اشیاء خاصیاست که قرار است ساخته شوند. اساس الگوی متد کارخانه «تعریف یک رابط برای ایجاد اشیاء که اجازه میدهد اشیایی که آن رابط را پیادهسازی میکنند در رابطه با اینکه کدام کلاس باید ایجاد شود تصمیم بگیرند. متد الگوی کارخانه اجازه میدهد که یک کلاس تصمیم در رابطه با ایجاد اشیاء را به زیرکلاسها واگذار نماید.» است.
اساساً کاربرد الگوی کارخانه برای شرایطی است که چندین کلاس با ریشه مشترک داریم (یعنی چندین کلاس یک کلاس فوقانی را پیادهسازی میکنند) و غالب استفاده نیز با شی سازی (نمونه سازی) از کلاس فوقانی صورت میگیرد .[۱]
PHP
[ویرایش]در مثال پایین دو کلاس (MySqlTable - OracleTable) برای ارتباط با پایگاه داده ایجاد کردیم که از اینترفیس DbTable استفاده میکنند. اما زمانی که قرار است از این دو کلاس استفاده کنیم وظیفه TableFactory است که کلاس مورد نظر را بر اساس تنظیماتی که در Factory قرار داده ایم آماده نماید. ممکن است در کلاس Factory بخواهیم از متدهای دیگری نیز استفاده نماییم که در تمام کلاسها از نوع DbTable قابل استفاده باشد. مانند تنظیمات پایگاه داده و ارسال آن به کلاس مربوط در هنگام ایجاد کلاس و ... .
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));