本文内容参考:
软考 系统架构设计师系列知识点之设计模式(2)_系统架构设计师中考设计模式吗-CSDN博客
https://baike.baidu.com/item/%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F?fromModule=lemma_search-box
设计模式-工厂方法模式(Factory Method)-CSDN博客
特此致谢!
Factory Pattern(工厂模式)
1. 概述
工厂模式(Factory Pattern),是Java中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。工厂模式是最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式。工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A();工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
2. 实现原理
工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。
通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。
工厂模式的核心思想就是把创建对象和使用对象解耦,由工厂负责对象的创建,而用户只能通过接口来使用对象。这种模式具有灵活应对变化的业务需求的优点,可以方便代码管理,避免代码重复。
3. 工厂模式的类型
(1)简单工厂模式(Simple Factory Pattern)
简单工厂模式不是一个正式的设计模式,但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象,根据传入的参数决定创建哪种类型的对象。
(2)工厂方法模式(Factory Method Pattern)
工厂方法模式定义了一个创建对象的接口,但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。
(3)抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
4. 代码举例
定义一个工厂接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
public interface Product {
void show();
}
public class ProductA implements Product {
@Override
public void show() {
System.out.println("ProductA");
}
}
public class ProductB implements Product {
@Override
public void show() {
System.out.println("ProductB");
}
}
public abstract class Factory {
public abstract Product createProduct();
}
public class ConcreteFactoryA extends Factory {
@Override
public Product createProduct() {
return new ProductA();
}
}
public class ConcreteFactoryB extends Factory {
@Override
public Product createProduct() {
return new ProductB();
}
}