Здравствуйте, читатели! Сегодня я буду обсуждать шаблон Factory от Gang of Four (GoF) с использованием TypeScript. В этой статье мы рассмотрим базовый фабричный шаблон и абстрактный фабричный шаблон с подробными примерами кода. Я буду подробно объяснять, чтобы убедиться, что даже новички в шаблонах проектирования смогут понять. Итак, приступим.

Оглавление

  1. Что такое фабричный шаблон?
  2. Базовый заводской шаблон
  3. Абстрактный заводской узор
  4. "Заключение"

Что такое заводской шаблон?

Фабричный шаблон — это шаблон проектирования, который делегирует создание экземпляра класса специализированному фабричному классу. Это отделяет создание объектов от их использования.

Базовый заводской шаблон

Во-первых, давайте взглянем на базовый шаблон фабрики. В следующем примере показана простая ProductFactory, которая производит два разных типа продуктов: Toy и Book.

interface Product {
    description: string;
}
class Toy implements Product {
    description = 'A toy';
}
class Book implements Product {
    description = 'A book';
}
class ProductFactory {
    createProduct(type: string): Product {
        if (type === 'toy') {
            return new Toy();
        }
        if (type === 'book') {
            return new Book();
        }
        throw new Error('Invalid product type');
    }
}

Абстрактная фабричная модель

Теперь давайте рассмотрим более продвинутый фабричный шаблон, а именно «Абстрактный фабричный шаблон». В следующем примере мы создаем фабрику для создания клиентов для разных конечных точек API.

typescriptCopy code
interface ApiClient {
    get: (path: string) => Promise<any>;
}
class UserApiClient implements ApiClient {
    get = async (path: string) => {
        // User API related request processing
        console.log(`User API request to ${path}`);
    };
}
class ProductApiClient implements ApiClient {
    get = async (path: string) => {
        // Product API related request processing
        console.log(`Product API request to ${path}`);
    };
}
interface ApiClientFactory {
    createApiClient(): ApiClient;
}
class UserApiClientFactory implements ApiClientFactory {
    createApiClient(): ApiClient {
        return new UserApiClient();
    }
}
class ProductApiClientFactory implements ApiClientFactory {
    createApiClient(): ApiClient {
        return new ProductApiClient();
    }
}
// Example usage
let factory: ApiClientFactory = new UserApiClientFactory();
let apiClient = factory.createApiClient();
apiClient.get('/users');
factory = new ProductApiClientFactory();
apiClient = factory.createApiClient();
apiClient.get('/products');

Заключение

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

Я надеюсь, что эта статья может быть справочной для тех, кто думает об использовании шаблона Factory в TypeScript, от новичков до опытных пользователей. Спасибо за прочтение!

Не стесняйтесь нажимать кнопку аплодисментов, если вы нашли эту статью полезной, и, пожалуйста, оставьте любые вопросы или комментарии, которые могут у вас возникнуть ниже!