سؤال

أنا فقط قرأت طريقة المصنع. أنا أفهم أنه يوفر وسيلة لتفويض الاستئصال إلى الفئات الفرعية. لكنني لم أستطع فهم الاستخدامات الممكنة في سيناريو العالم الحقيقي.

هل يمكن لأي شخص إعطاء مثال نموذجي يوضح كيف يمكن استخدام نمط طريقة المصنع حتى أتمكن من الارتباط بما قرأته.

بيان المشكلة الذي يكون نمط طريقة المصنع هو أفضل حل سيكون كافياً لتوضيح ذلك.

هل كانت مفيدة؟

المحلول

يعمل نمط تصميم المصنع لتنفيذ الفصل كجسر بين فصول متعددة. فكر في مثال على استخدام خوادم قاعدة بيانات متعددة مثل SQL Server و Oracle. إذا كنت تقوم بتطوير تطبيق باستخدام قاعدة بيانات SQL Server كخلف ، ولكن في المستقبل ، تحتاج إلى تغيير قاعدة بيانات الواجهة الخلفية إلى Oracle ، فستحتاج إلى تعديل جميع التعليمات البرمجية الخاصة بك ، إذا لم تكن قد كتبت رمزك التالي لتصميم المصنع.

في نمط تصميم المصنع ، تحتاج إلى القيام بعمل قليل جدًا لتحقيق ذلك. إن نمط تصميم المصنع ينفذ فئة يهتم بك ويقلل من عبءك. التبديل من خادم قاعدة البيانات لن يزعجك على الإطلاق. تحتاج فقط إلى إجراء بعض التغييرات الصغيرة في ملف التكوين الخاص بك.

نصائح أخرى

مثال رمز PHP:

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

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

class OracleTable implements DbTable
{
    public function create($array)
    {
        // add a record to a table 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;
    }
}

من API أنا أتطور الآن:

WebGalleryFactory factory = WebGalleryFactory.newInstance (WebGalleryType.PICASA);
WebAlbum album = factory.createAlbum (title, description);

في هذا المثال ، أستخدم طريقة المصنع لإنشاء مصنع مجردة من نوع معين (بيكاسا في المثال).

غالبًا ما يتم استخدام هذين النمطين معًا.

Zend_DB يستخدمه في ذلك zend_db_adapter فئة للسماح بإنشاء أنواع مختلفة من كائنات قاعدة البيانات استنادًا إلى إعدادات قاعدة البيانات التي تم تمريرها من كائن تكوين.

مثال واحد من .NET مكتبة الفئة الأساسية (BCL) هو Control.CreateControlsinstance, ، وهو يستخدم من قبل العديد من الأعضاء الآخرين في فئة التحكم (Windows).

يمكنك تجاوز هذه الطريقة المحمية لتوفير مجموعة عناصر التحكم الخاصة بك ، على سبيل المثال عند تنفيذ تحكم مخصص.

نمط تصميم المصنع البسيط لا ينتمي إلى عصابات أربعة. نمط المصنع البسيط هو واحد من ذلك يعيد مثيلًا لأحد الفئات العديدة المحتملة ، اعتمادًا على البيانات المقدمة لها. هذا يعني أن الفئات التي تُرجع لها نفس فئة الوالدين والأساليب ، لكن كل منها يقوم بمهمة مختلفة لنوع مختلف من البيانات.هنا هو المنشور الكامل مع مثال العالم الحقيقي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top