Подтвердить что ты не робот

Примеры реального мира Factory Шаблон метода

Я просто прочитал метод Factory. Я понимаю, что он предоставляет способ делегирования экземпляра подклассам. Но я не мог понять возможные варианты использования в реальном мире.

Может ли кто-нибудь дать один типичный пример, показывающий, как шаблон метода Factory может использоваться, чтобы я мог относиться к тому, что я прочитал.

Оператор проблемы, для которого шаблон метода Factory является наилучшим решением, был бы достаточным для его ясности.

4b9b3361

Ответ 1

Класс, реализующий шаблон дизайна factory, работает как мост между несколькими классами. Рассмотрим пример использования нескольких серверов баз данных, таких как SQL Server и Oracle. Если вы разрабатываете приложение с использованием базы данных SQL Server в качестве бэкэнд, но в будущем необходимо изменить базу данных базы данных на oracle, вам нужно будет изменить весь свой код, если вы не указали свой код после factory шаблона проектирования.

В шаблоне дизайна factory вам нужно сделать очень мало работы для достижения этого. Класс, реализующий шаблон дизайна factory, заботится о вас и уменьшает ваше бремя. Переключение с сервера базы данных вообще не беспокоит вас. Вам просто нужно внести небольшие изменения в конфигурационный файл.

Ответ 2

Пример 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;
    }
}

Ответ 3

Zend_Db использует в нем класс Zend_Db_Adapter, чтобы разрешить создание различных объектов базы данных на основе параметров базы данных, переданных из объекта конфигурации.

Ответ 4

Из API, который я сейчас разрабатываю:

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

В этом примере я использую метод Factory для создания абстрактного Factory определенного типа (PICASA в примере).

Эти два шаблона часто используются вместе.

Ответ 5

Один пример из .NET библиотеки базового класса (BCL) - Control.CreateControlsInstance, который есть используемый многими другими членами класса управления Windows Forms.

Вы можете переопределить этот защищенный метод, чтобы предоставить свою собственную коллекцию элементов управления, например. когда вы реализуете настраиваемый элемент управления.

Ответ 6

Простой Factory Шаблон дизайна не принадлежит бандам четырех. Простой шаблон Factory - один из них возвращает экземпляр одного из нескольких возможных классов, в зависимости от предоставленных ему данных. Это означает, что возвращаемые классы имеют один и тот же родительский класс и методы, но каждый из них выполняет задачу по-разному для разных типов данных. Вот полный отчет с реальным примером