Home  >  Article  >  Backend Development  >  Abstract factory pattern and its PHP implementation

Abstract factory pattern and its PHP implementation

伊谢尔伦
伊谢尔伦Original
2016-12-01 11:50:311287browse

The Abstract Factory pattern is a creational pattern that provides a way to encapsulate a set of separate factories with the same theme. Its essence is to "provide interfaces to create a series of related or independent objects without specifying the specific classes of these objects."

The abstract factory pattern provides an interface for creating system-related or interdependent objects without specifying their concrete classes.

Main roles in the Abstract Factory pattern

Abstract Factory role: It declares the interface for creating abstract product objects

Concrete Factory (Concrete Factory) role: Implements the operation of creating product objects

Abstract Product (Abstract Product) Role: declares the interface of a type of product

Concrete Product role: implements the interface defined by the abstract product role

This is similar to the factory method pattern. We no longer only need one burger, but maybe 4 burgers and 2 chicken wings. , we still told the waiter that the waiter belongs to the concrete factory, the abstract product is the food that McDonald's can sell, and the specific product is the food we ask the waiter for.

Applicability

When a system is created, assembled and represented independently of its products.

When a system is to be configured by one of multiple product series.

It is necessary to emphasize the design of a series of related product objects for joint use.

Provide a product class library and only want to display their interfaces rather than their implementations.

Class Diagram

Abstract factory pattern and its PHP implementation

Instance

In this example, the factory class implements a set of factory methods. If you want to add new functions, you can add a new interface and let the new factory class implement this interface without modifying the existing factory class.

Advantages and Disadvantages

Advantages

Separates specific categories

Makes it easy to add or replace product families

Conducive to product consistency

Disadvantages

Difficult to support new types of products. This is because the AbstractFactory interface determines the collection of products that can be created. Supporting new types of products requires extending the factory access interface, resulting in changes to the AbstractFactory class and all its subclasses.


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:OOP Thought and DesignNext article:OOP Thought and Design