Здравствуйте, читатели! Сегодня я буду обсуждать шаблон Factory от Gang of Four (GoF) с использованием TypeScript. В этой статье мы рассмотрим базовый фабричный шаблон и абстрактный фабричный шаблон с подробными примерами кода. Я буду подробно объяснять, чтобы убедиться, что даже новички в шаблонах проектирования смогут понять. Итак, приступим.
Оглавление
Что такое заводской шаблон?
Фабричный шаблон — это шаблон проектирования, который делегирует создание экземпляра класса специализированному фабричному классу. Это отделяет создание объектов от их использования.
Базовый заводской шаблон
Во-первых, давайте взглянем на базовый шаблон фабрики. В следующем примере показана простая 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, от новичков до опытных пользователей. Спасибо за прочтение!
Не стесняйтесь нажимать кнопку аплодисментов, если вы нашли эту статью полезной, и, пожалуйста, оставьте любые вопросы или комментарии, которые могут у вас возникнуть ниже!