设计模式中的工厂模式(Factory Design pattern)是一个比较常用的创建型设计模式,其中可以细分为三种:简单工厂(Simple Factory)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。那么三者有什么区别呢?先说结论:
- 简单工厂:只有唯一工厂(简单工厂),一个产品接口/抽象类,根据简单工厂中的静态方法来创建具体产品对象。适用于产品较少,几乎不扩展的情景
- 工厂方法:有多个工厂(抽象工厂+多个具体工厂),一个产品接口/抽象类,根据继承抽象工厂中的方法来多态创建具体产品对象。适用于一个类型的多个产品
- 抽象方法:有多个工厂(抽象工厂+多个具体工厂),多个产品接口/抽象类,对产品子类进行分组,根据继承抽象工厂中的方法多态创建同组的不同具体产品对象。适用于多个类型的多个产品
更多学习资源获取:评论区留言或是私信获取到哦
下面具体展开说明
一、简单工厂模式(Simple Factory Pattern)#
1.1 简单工厂模式介绍#
简单工厂模式又叫做静态工厂方法模式(static Factory Method pattern),它是通过使用静态方法接收不同的参数来返回不同的实例对象。我们通过一个类图来进行讲解:
Product
接口:定义要创建的产品对象的接口ProductA
、ProductB
、ProductC
产品类:实现产品接口,具有产品接口特性的具体产品SimpleFactory
简单工厂:只有一个工厂,通过静态方法createProduct
创建具体的产品对象client
客户端:客户端有多个,每个客户端可以通过简单工厂来创建具体的产品对象
1.2 简单工厂模式实现#
我们以上面类图为例,实现简单工厂模式:
/**产品接口**/
public interface Product {
void doSomething();
}
/**具体产品实现**/
class ProductA implements Product{
@Override
public void doSomething() {
System.out.println("我是ProductA");
}
}
class ProductB implements Product{
@Override
public void doSomething() {
System.out.println("我是ProductB");
}
}
class ProductC implements Product{
@Override
public void doSomething() {
System.out.println("我是ProductC");
}
}
/**简单工厂**/
public class SimpleFactory {
/**工厂类创建产品静态方法**/
public static Product createProduct(String productName) {
Product instance = null;
switch (productName){
case "A":
instance = new ProductA();
break;
case "B":
instance = new ProductB();
break;
case "C":
instance = new ProductC();
}
return instance;
}
/**客户端(client)调用工厂类**/
public static void main(String[] args) {
SimpleFactory simpleFactory = new SimpleFactory();
c