


In-depth understanding of the three implementation methods of Java factory pattern
In-depth understanding of the three implementation methods of Java factory pattern
The factory pattern is a creational design pattern, which provides the best way to create objects. Separating the object creation process from the usage process can help us decouple the code and improve the maintainability and scalability of the code. In Java, the factory pattern has a wide range of applications. This article will introduce three implementation methods of Java factory pattern and provide specific code examples.
- Simple Factory Pattern
Simple factory pattern is also called static factory pattern. Through a factory class, different instance objects are created according to different parameters. . It contains three roles: factory class, abstract product class and concrete product class.
The following is a sample code of a simple factory pattern:
// 抽象产品类 interface Product { void print(); } // 具体产品类A class ProductA implements Product { @Override public void print() { System.out.println("Product A"); } } // 具体产品类B class ProductB implements Product { @Override public void print() { System.out.println("Product B"); } } // 工厂类 class SimpleFactory { public static Product createProduct(String type) { if (type.equals("A")) { return new ProductA(); } else if (type.equals("B")) { return new ProductB(); } else { throw new IllegalArgumentException("Invalid product type."); } } } // 测试代码 public class Main { public static void main(String[] args) { Product productA = SimpleFactory.createProduct("A"); productA.print(); // 输出:Product A Product productB = SimpleFactory.createProduct("B"); productB.print(); // 输出:Product B } }
In the above code, the abstract product class Product
defines a printing method, and the specific product class ProductA
and ProductB
implement this method. The factory class SimpleFactory
uses the static method createProduct
to create the corresponding product object according to the incoming parameter type.
- Factory Method Pattern
The factory method pattern is also called the factory pattern, which distributes the logic of creating products in the factory class to each specific factory in subcategories. It contains four roles: abstract factory class, concrete factory class, abstract product class and concrete product class.
The following is a sample code of the factory method pattern:
// 抽象产品类 interface Product { void print(); } // 具体产品类A class ProductA implements Product { @Override public void print() { System.out.println("Product A"); } } // 具体产品类B class ProductB implements Product { @Override public void print() { System.out.println("Product B"); } } // 抽象工厂类 interface Factory { Product createProduct(); } // 具体工厂类A class FactoryA implements Factory { @Override public Product createProduct() { return new ProductA(); } } // 具体工厂类B class FactoryB implements Factory { @Override public Product createProduct() { return new ProductB(); } } // 测试代码 public class Main { public static void main(String[] args) { Factory factoryA = new FactoryA(); Product productA = factoryA.createProduct(); productA.print(); // 输出:Product A Factory factoryB = new FactoryB(); Product productB = factoryB.createProduct(); productB.print(); // 输出:Product B } }
In the above code, the abstract product class Product
defines a printing method, and the specific product class ProductA
and ProductB
implement this method. The abstract factory class Factory
defines an abstract method for creating products. The specific factory classes FactoryA
and FactoryB
respectively implement this method and create corresponding product objects.
- Abstract Factory Pattern
The abstract factory pattern is an extension of the factory method pattern. It consists of multiple abstract product classes, multiple concrete product classes, It consists of an abstract factory class and multiple concrete factory classes. It provides an optimal way to create a family of related or interdependent objects.
The following is a sample code of the abstract factory pattern:
// 抽象产品类A interface ProductA { void print(); } // 具体产品A1 class ProductA1 implements ProductA { @Override public void print() { System.out.println("Product A1"); } } // 具体产品A2 class ProductA2 implements ProductA { @Override public void print() { System.out.println("Product A2"); } } // 抽象产品类B interface ProductB { void print(); } // 具体产品B1 class ProductB1 implements ProductB { @Override public void print() { System.out.println("Product B1"); } } // 具体产品B2 class ProductB2 implements ProductB { @Override public void print() { System.out.println("Product B2"); } } // 抽象工厂类 interface AbstractFactory { ProductA createProductA(); ProductB createProductB(); } // 具体工厂类1 class ConcreteFactory1 implements AbstractFactory { @Override public ProductA createProductA() { return new ProductA1(); } @Override public ProductB createProductB() { return new ProductB1(); } } // 具体工厂类2 class ConcreteFactory2 implements AbstractFactory { @Override public ProductA createProductA() { return new ProductA2(); } @Override public ProductB createProductB() { return new ProductB2(); } } // 测试代码 public class Main { public static void main(String[] args) { AbstractFactory factory1 = new ConcreteFactory1(); ProductA productA1 = factory1.createProductA(); productA1.print(); // 输出:Product A1 ProductB productB1 = factory1.createProductB(); productB1.print(); // 输出:Product B1 AbstractFactory factory2 = new ConcreteFactory2(); ProductA productA2 = factory2.createProductA(); productA2.print(); // 输出:Product A2 ProductB productB2 = factory2.createProductB(); productB2.print(); // 输出:Product B2 } }
In the above code, the abstract product classes ProductA
and ProductB
respectively define a print Method, specific product classes ProductA1
, ProductA2
, ProductB1
and ProductB2
implement this method. The abstract factory class AbstractFactory
defines two abstract methods for creating products. The concrete factory classes ConcreteFactory1
and ConcreteFactory2
respectively implement these two methods to create corresponding products. object.
Through the code examples of the above three implementation methods, we can have a deeper understanding of the application and implementation of the Java factory pattern. Depending on different scenarios and needs, choosing a suitable factory pattern can help us improve the maintainability and scalability of our code, thereby making our code more flexible and easier to maintain.
The above is the detailed content of In-depth understanding of the three implementation methods of Java factory pattern. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.
