Home Java javaTutorial JAVA design patterns: Summary and differences between simple factory, factory method, and abstract factory.

JAVA design patterns: Summary and differences between simple factory, factory method, and abstract factory.

Dec 15, 2016 pm 02:26 PM
java design patterns

Simple factory, factory method, and abstract factory are all creational patterns in design patterns. Its main function is to help us extract the instantiation part of the object, optimize the system architecture, and enhance the scalability of the system.

This article is a summary of my study of these three modes and my understanding of the differences between them.

Simple Factory

Factory classes in the simple factory pattern generally use static methods to return different object instances based on the different parameters they receive.

It cannot be expanded without modifying the code.

JAVA design patterns: Summary and differences between simple factory, factory method, and abstract factory.

Factory method

The factory method provides a factory class for each product. Different product instances are created through different factory instances.

In the same hierarchical structure, any product can be added.

JAVA design patterns: Summary and differences between simple factory, factory method, and abstract factory.

Abstract Factory

Abstract factory responds to the concept of product family. For example, each automobile company may want to produce cars, trucks, and buses at the same time, so each factory must have a method for creating cars, trucks, and buses.

It was born in response to the concept of product family. It is easy to add new product lines, but it is impossible to add new products.

JAVA design patterns: Summary and differences between simple factory, factory method, and abstract factory.

Summary

★In the factory pattern, the important thing is the factory class, not the product class. Product classes can be in many forms, including multiple levels of inheritance or a single class. But it should be clear that the factory mode interface will only return one type of instance. This needs to be paid attention to when designing product classes. It is best to have a parent class or a jointly implemented interface.

★Using the factory pattern, the returned instance must be created by the factory and not obtained from other objects.

★The instances returned by the factory pattern do not need to be newly created, and it is also possible to return instances created by the factory.

Differences

Simple Factory: Used to produce any product in the same level structure. (There is nothing you can do about adding new products)

Factory mode: used to produce fixed products in the same hierarchical structure. (Supports adding any product)
Abstract factory: used to produce all products of different product families. (There is nothing you can do about adding new products; adding product families is supported)

The above three factory methods have different levels of support in the two directions of hierarchical structure and product family. So consider which method should be used based on the situation.


More JAVA design patterns: Summary and differences of simple factory, factory method, and abstract factory. For related articles, please pay attention to the PHP Chinese website!

Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1666
14
PHP Tutorial
1273
29
C# Tutorial
1252
24
Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Apr 19, 2025 pm 04:51 PM

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

How do I convert names to numbers to implement sorting and maintain consistency in groups? How do I convert names to numbers to implement sorting and maintain consistency in groups? Apr 19, 2025 pm 11:30 PM

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

How to simplify field mapping issues in system docking using MapStruct? How to simplify field mapping issues in system docking using MapStruct? Apr 19, 2025 pm 06:21 PM

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

How to elegantly obtain entity class variable names to build database query conditions? How to elegantly obtain entity class variable names to build database query conditions? Apr 19, 2025 pm 11:42 PM

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? Apr 19, 2025 pm 11:45 PM

Start Spring using IntelliJIDEAUltimate version...

How to safely convert Java objects to arrays? How to safely convert Java objects to arrays? Apr 19, 2025 pm 11:33 PM

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

How to use the Redis cache solution to efficiently realize the requirements of product ranking list? How to use the Redis cache solution to efficiently realize the requirements of product ranking list? Apr 19, 2025 pm 11:36 PM

How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? Apr 19, 2025 pm 11:27 PM

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...

See all articles